public void WriteAsInlineXbrlFiling()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            var instance = LoadInstanceFromExcelDocument(@"Samples\BSharpIfrsFactsValuesSampleV1.xlsx");

            instance.Dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);
            AddExtensionTaxonomy(instance.Dts);

            var writerSettings = new InlineXbrlFilingWriterSettings
            {
                Title   = "iXBRL Export",
                Culture = new CultureInfo("en-GB"),
                Scale   = 3,
                Scope   = new ScopeSettings
                {
                    PresentationNetworks = GetSupportedPresentationNetworks()
                },
                InlineXbrlFileName = "banan-20180710.xhtml"
            };

            // Act
            var xTemplate = XDocument.Load(@"Samples\iXBRL.xhtml");
            var writer    = new InlineXbrlFilingWriter(xTemplate, writerSettings);

            instance.Save(writer);

            // Assert
            File.WriteAllBytes(@"C:\temp\banan-20180710.zip", writer.ZipArchiveBytes);
        }
        public void WriteAsWord()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            var instance = LoadInstanceFromExcelDocument(@"Samples\BSharpIfrsFactsValuesSampleV1.xlsx");

            instance.Dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);
            AddExtensionTaxonomy(instance.Dts);

            var writerSettings = new WordWriterSettings
            {
                Culture = new CultureInfo("en-GB"),
                Scale   = 3,
                Scope   = new ScopeSettings
                {
                    PresentationNetworks = GetSupportedPresentationNetworks()
                },
            };

            // Act
            var templateBytes = File.ReadAllBytes(@"Samples\Word.docx");
            var writer        = new WordWriter(templateBytes, writerSettings);

            instance.Save(writer);

            // Assert
            File.WriteAllBytes(@"C:\temp\banan-20180710.docx", writer.DocumentBytes);
        }
Example #3
0
        public void AddFromExtension()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            var dts          = new DiscoverableTaxonomySet();
            var baseTaxonomy = dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);

            XNamespace bSharpNamespace = "http://banan-it.com/taxonomy/2018-07-05/bsharp";
            XNamespace ifrsNamespace   = "http://xbrl.ifrs.org/taxonomy/2017-03-09/ifrs-full";

            var extension = new TaxonomyExtension("banan", bSharpNamespace);

            var concept1 = new ExtensionConcept("ComputerEquipment", DataTypeRegistry.Monetary, BalanceTypes.Debit, PeriodTypes.Instant);

            concept1.AddLabel("Computer equipment", "en");
            concept1.AddLocation(new Uri("http://xbrl.ifrs.org/role/ifrs/ias_1_2017-03-09_role-800100"), ifrsNamespace + "PropertyPlantAndEquipmentAbstract", ifrsNamespace + "OfficeEquipment");
            extension.ExtensionItems.Add(concept1);

            var member1 = new ExtensionMember("BestPaintMember");

            member1.AddLabel("Best Paint", "en");
            member1.AddLocation(
                ifrsNamespace + "DisclosureOfOperatingSegmentsTable", ifrsNamespace + "SegmentsAxis",
                ifrsNamespace + "ReportableSegmentsMember", null);
            extension.ExtensionItems.Add(member1);

            // Act
            var extensionTaxonomy = dts.AddTaxonomy(new Uri("banan-20180710.xsd", UriKind.Relative), extension);
        }
Example #4
0
        public void AddFromFileSet()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            // Act
            var dts      = new DiscoverableTaxonomySet();
            var taxonomy = dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);
        }
Example #5
0
        public void WriteBaseTaxonomy()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            var dts          = new DiscoverableTaxonomySet();
            var baseTaxonomy = dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);

            // Act
            var writer = new ZipArchiveWriter();

            baseTaxonomy.Save(writer);

            // Assert
            File.WriteAllBytes(@"C:\temp\IFRST_2017-03-09-exported.zip", writer.ZipArchiveBytes);
        }
        public override void Invoke()
        {
            base.Invoke();

            if (!NamedParameters.ContainsKey("entry"))
            {
                Context.Logger.WriteLine("Parameter 'entry' is missing.");
                return;
            }
            var entry = NamedParameters["entry"];

            IFileReader fileReader;

            if (NamedParameters.ContainsKey("manifest"))
            {
                var manifest       = NamedParameters["manifest"];
                var manifestReader = new ManifestResourcesReader(GetType());
                var stream         = manifestReader.GetStream(manifest);
                var zipArchive     = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: false);
                fileReader = new ZipArchiveReader(zipArchive);
            }
            else
            if (NamedParameters.ContainsKey("archive"))
            {
                var archive    = NamedParameters["archive"];
                var zipArchive = ZipFile.Open(archive, ZipArchiveMode.Read);
                fileReader = new ZipArchiveReader(zipArchive);
            }
            else if (NamedParameters.ContainsKey("dir"))
            {
                var dir = NamedParameters["dir"];
                fileReader = new FileSystemReader(dir);
            }
            else
            {
                Context.Logger.WriteLine("You must specify either dir, manifest or archive to define the source location of the entry point.");
                return;
            }

            var taxonomySource = new TaxonomyFileSet(fileReader);

            Instance.Dts.AddTaxonomy(new Uri(entry), taxonomySource);
        }
        public void WriteAsXbrl()
        {
            // Arrange
            var zipArchive     = ZipFile.Open(@"Samples\IFRST_2017-03-09.zip", ZipArchiveMode.Read);
            var fileReader     = new ZipArchiveReader(zipArchive);
            var taxonomySource = new TaxonomyFileSet(fileReader);

            var instance = LoadInstanceFromExcelDocument(@"Samples\BSharpIfrsFactsValuesSampleV1.xlsx");

            instance.Dts.AddTaxonomy(new Uri("http://xbrl.ifrs.org/taxonomy/2017-03-09/full_ifrs_entry_point_2017-03-09.xsd"), taxonomySource);
            AddExtensionTaxonomy(instance.Dts);

            // Act
            var writer = new XbrlWriter();

            instance.Save(writer);

            // Assert
            File.WriteAllText(@"C:\temp\banan-20180710.xml", writer.Document.ToString());
        }