Adicionar links de nota de rodapé e objetos de referência de função ao XBRL usando C#

No post anterior, aprendemos como adicionar objetos de referência de esquema, contexto, unidade e fato a documentos de instância XBRL usando C#. Neste artigo, aprenderemos como adicionar links de notas de rodapé e objetos de referência de função ao XBRL usando C#.

Os seguintes tópicos serão abordados neste artigo:

Para adicionar objetos de referência de função e referência de função de arco a um documento de instância XBRL, usaremos a API Aspose.Finance for .NET. Ele permite criar instâncias XBRL, analisar e validar os arquivos XBRL ou iXBRL. A classe XbrlDocument da API representa um documento XBRL que contém uma ou mais instâncias XBRL. Uma instância XBRL é um fragmento XML, com o elemento raiz tendo uma tag XBRL. A classe XbrlInstance fornece vários métodos e propriedades para trabalhar com a instância XBRL. A classe FootnoteLink contém localizadores, recursos e arcos para descrever os relacionamentos entre fatos em uma instância XBRL. A API fornece a classe RoleReference que permite fazer referência às definições de qualquer valor de atributo de função personalizado usado em links de notas de rodapé na instância XBRL. Da mesma forma, a classe ArcRoleReference permite resolver valores de função de arco personalizados que são usados em um Link base ou em uma instância XBRL.

Por favor, baixe a DLL da API ou instale-a usando NuGet.

PM> Install-Package Aspose.Finance

Podemos adicionar um link de nota de rodapé em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Adicione uma nova instância XBRL às instâncias do objeto XbrlDocument.
  3. Adicione uma nova referência de esquema às referências de esquema do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de SchemaRefCollection.
  5. Inicialize a instância Context e adicione-a à coleção Context objects.
  6. Defina uma instância de Footnote e defina seu rótulo e texto.
  7. Inicialize o tipo de localizador usando a instância da classe Loc.
  8. Defina FootnoteArc com o rótulo do localizador e o rótulo da nota de rodapé como argumentos.
  9. Crie uma instância da classe FootnoteLink.
  10. Adicione Footnote, Locator e FootnoteArc às coleções FootnoteLink relevantes.
  11. Depois disso, adicione o FootnoteLink à coleção FootnoteLinks.
  12. Finalmente, salve o arquivo XBRL usando o método XbrlDocument.Save(). Ele usa o caminho do arquivo de saída como um argumento.

O exemplo de código a seguir mostra como adicionar um link de nota de rodapé em um documento de instância XBRL usando C#.

// Crie uma instância da classe XbrlDocument
XbrlDocument document = new XbrlDocument();

// Obter instâncias Xbrl
XbrlInstanceCollection xbrlInstances = document.XbrlInstances;

// Adicionar XbrlInstance
xbrlInstances.Add();
XbrlInstance xbrlInstance = xbrlInstances[0];

// Definir referência de esquema
SchemaRefCollection schemaRefs = xbrlInstance.SchemaRefs;
schemaRefs.Add(@"C:\Files\Finance\schema.xsd", "example", "http://example.com/xbrl/taxonomy");
SchemaRef schema = schemaRefs[0];

// Definir contexto
ContextPeriod contextPeriod = new ContextPeriod(DateTime.Parse("2020-01-01"), DateTime.Parse("2020-02-10"));
ContextEntity contextEntity = new ContextEntity("exampleIdentifierScheme", "exampleIdentifier");
Context context = new Context(contextPeriod, contextEntity);
context.Id = "cd1";
xbrlInstance.Contexts.Add(context);

// Definir nota de rodapé
Footnote footnote = new Footnote("footnote1");
footnote.Text = "Including the effects of the merger.";

// Definir localizador
Loc loc = new Loc("#cd1", "fact1");

// Definir nota de rodapéArc
FootnoteArc footnoteArc = new FootnoteArc(loc.Label, footnote.Label);

// Definir nota de rodapé link
FootnoteLink footnoteLink = new FootnoteLink();
footnoteLink.Footnotes.Add(footnote);
footnoteLink.Locators.Add(loc);
footnoteLink.FootnoteArcs.Add(footnoteArc);
xbrlInstance.FootnoteLinks.Add(footnoteLink);

// Salve o documento
document.Save(@"C:\Files\Finance\document6.xbrl");

Adicionar objeto de referência de função ao XBRL usando C#

Podemos adicionar uma referência de função em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, adicione uma nova instância XBRL às instâncias do objeto XbrlDocument.
  3. Em seguida, adicione uma nova referência de esquema às referências de esquema do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de SchemaRefCollection.
  5. Em seguida, obtenha o RoleType do método GetRoleTypeByURI().
  6. Em seguida, crie uma instância da classe RoleReference com o objeto RoleType como argumento.
  7. Depois disso, adicione o RoleReference à coleção de objetos RoleReference.
  8. Finalmente, salve o arquivo XBRL usando o método XbrlDocument.Save(). Ele usa o caminho do arquivo de saída como um argumento.

O exemplo de código a seguir mostra como adicionar referência de função em um documento de instância XBRL usando C#.

// Crie uma instância da classe XbrlDocument
XbrlDocument document = new XbrlDocument();

// Obter instâncias Xbrl
XbrlInstanceCollection xbrlInstances = document.XbrlInstances;

// Adicionar XbrlInstance
xbrlInstances.Add();
XbrlInstance xbrlInstance = xbrlInstances[0];

// Definir referência de esquema
SchemaRefCollection schemaRefs = xbrlInstance.SchemaRefs;
schemaRefs.Add(@"C:\Files\Finance\schema.xsd", "example", "http://example.com/xbrl/taxonomy");
SchemaRef schema = schemaRefs[0];

// Adicionar referência de função
RoleType roleType = schema.GetRoleTypeByURI("http://abc.com/role/link1");
if (roleType != null)
{
    RoleReference roleReference = new RoleReference(roleType);
    xbrlInstance.RoleReferences.Add(roleReference);
}

// Salve o documento
document.Save(@"C:\Files\Finance\document7.xbrl");

Adicionar objeto de referência de função Arc ao XBRL usando C#

Podemos adicionar uma referência de função Arc em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, adicione uma nova instância XBRL às instâncias do objeto XbrlDocument.
  3. Em seguida, adicione uma nova referência de esquema às referências de esquema do objeto XbrlInstance.
  4. Em seguida, obtenha SchemaRef por seu índice de SchemaRefCollection.
  5. Em seguida, obtenha o ArcRoleType do método GetArcroleTypeByURI().
  6. Em seguida, crie uma instância da classe ArcRoleReference com o objeto ArcRoleType como argumento.
  7. Depois disso, adicione o ArcRoleReference à coleção de objetos ArcRoleReference.
  8. Finalmente, salve o arquivo XBRL usando o método XbrlDocument.Save(). Ele usa o caminho do arquivo de saída como um argumento.

O exemplo de código a seguir mostra como adicionar referência de função arc em um documento de instância XBRL usando C#.

// Crie uma instância da classe XbrlDocument
XbrlDocument document = new XbrlDocument();

// Obter instâncias Xbrl
XbrlInstanceCollection xbrlInstances = document.XbrlInstances;

// Adicionar XbrlInstance
xbrlInstances.Add();
XbrlInstance xbrlInstance = xbrlInstances[0];

// Definir referência de esquema
SchemaRefCollection schemaRefs = xbrlInstance.SchemaRefs;
schemaRefs.Add(@"C:\Files\Finance\schema.xsd", "example", "http://example.com/xbrl/taxonomy");
SchemaRef schema = schemaRefs[0];

// Adicionar referência de função de arco
ArcroleType arcroleType = schema.GetArcroleTypeByURI("http://abc.com/arcrole/footnote-test");
if (arcroleType != null)
{
    ArcroleReference arcroleReference = new ArcroleReference(arcroleType);
    xbrlInstance.ArcroleReferences.Add(arcroleReference);
}

// Salve o documento
document.Save(@"C:\Files\Finance\document8.xbrl");

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como:

  • crie um documento XBRL usando C#;
  • adicione uma nota de rodapé e um arco de nota de rodapé usando o link de nota de rodapé para objetos XBRL programaticamente;
  • adicione referências de função e função de arco em XBRL em C#.

Além disso, você pode aprender mais sobre o Aspose.Finance for .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também