private void FillFromExcelDocument(string fileName, XElement xDeclarationsHolder)
        {
            var etbUnit = new CurrencyUnit("ETB");

            Instance.Units.Add(etbUnit);

            var quarter1Of2018        = new DurationPeriod(new DateTime(2018, 1, 1), new DateTime(2018, 3, 31));
            var startOfQuarter1Of2018 = new InstantPeriod(new DateTime(2017, 12, 31));
            var endOfQuarter1Of2018   = new InstantPeriod(new DateTime(2018, 3, 31));

            Instance.Periods.Add(quarter1Of2018);
            Instance.Periods.Add(startOfQuarter1Of2018);
            Instance.Periods.Add(endOfQuarter1Of2018);

            var wsi = new Entity
            {
                Id = "wsi",
                IdentifierScheme = new Uri("http://www.sec.gov/CIK"),
                Identifier       = "WSI",
                Name             = "Walia Steel Industry PLC"
            };

            Instance.Entities.Add(wsi);

            var package   = new ExcelPackage(new FileInfo(fileName));
            var worksheet = package.Workbook.Worksheets[1];

            ExcelRangeBase conceptCell         = worksheet.Cells["B2"];
            ExcelRangeBase valueCell           = worksheet.Cells["C2"];
            ExcelRangeBase startDateCell       = worksheet.Cells["D2"];
            ExcelRangeBase dateOrEndDateCell   = worksheet.Cells["E2"];
            ExcelRangeBase explicitMembersCell = worksheet.Cells["F2"];

            while (conceptCell.Value != null && valueCell.Value != null)
            {
                var concept = conceptCell.GetValue <string>();
                var value   = valueCell.Value;
                var period  = startDateCell.Value == null || string.IsNullOrEmpty(startDateCell.Value.ToString()) ?
                              new InstantPeriod(dateOrEndDateCell.GetValue <DateTime>()) :
                              (Period) new DurationPeriod(startDateCell.GetValue <DateTime>(), dateOrEndDateCell.GetValue <DateTime>());

                var conceptName = ToXName(concept, xDeclarationsHolder);
                var fact        = new Fact(conceptName, wsi, period)
                {
                    Unit          = etbUnit,
                    Value         = value.ToString(),
                    BalanceMethod = BalanceMethod.Algebraic
                };

                AddExplicitMembers(fact, explicitMembersCell.Value, xDeclarationsHolder);

                Instance.Facts.Add(fact);

                conceptCell         = conceptCell.Offset(1, 0);
                valueCell           = valueCell.Offset(1, 0);
                startDateCell       = startDateCell.Offset(1, 0);
                dateOrEndDateCell   = dateOrEndDateCell.Offset(1, 0);
                explicitMembersCell = explicitMembersCell.Offset(1, 0);
            }
        }
Example #2
0
        public void Slice()
        {
            // Arrange
            var entity = new Entity {
                IdentifierScheme = new Uri("http://www.sec.gov/CIK"), Identifier = "WSI", Id = "wsi", Name = "Walia Steel Industry PLC"
            };
            var unit          = new CurrencyUnit("CHF");
            var duration1     = new DurationPeriod(new DateTime(2017, 1, 1), new DateTime(2017, 12, 31));
            var instant1Start = new InstantPeriod(new DateTime(2016, 12, 31));
            var duration2     = new DurationPeriod(new DateTime(2018, 1, 1), new DateTime(2018, 12, 31));

            var concept1 = new Item {
                Name = "concept1"
            };

            var duration1Fact = new Fact(concept1.Name, entity, duration1)
            {
                Unit = unit, Value = "2017", BalanceMethod = BalanceMethod.Algebraic
            };
            var instant1StartFact = new Fact(concept1.Name, entity, instant1Start)
            {
                Unit = unit, Value = "2017.1", BalanceMethod = BalanceMethod.Algebraic
            };
            var duration2Fact = new Fact(concept1.Name, entity, duration2)
            {
                Unit = unit, Value = "2018", BalanceMethod = BalanceMethod.Algebraic
            };
            var facts = new[] { duration1Fact, instant1StartFact, duration2Fact };

            var factSet = new FactSet(facts);

            var duration1Aspect     = new PeriodAspect(duration1);
            var instant1StartAspect = new PeriodAspect(instant1Start);

            var duration1Member = new Member(duration1Aspect);

            duration1Member.RelatedAspects.Add(new RelatedAspect(instant1StartAspect, RelatedAspectRoles.PeriodStart));

            // Act
            var slicedFactSetIncludingRelatedAspects = factSet.Slice(duration1Member, true);
            var slicedFactSetExcludingRelatedAspects = factSet.Slice(duration1Member, false);

            // Assert
            Assert.AreEqual(facts.Length, factSet.FactModels.Count);
            Assert.AreEqual(2, slicedFactSetIncludingRelatedAspects.FactModels.Count);
            Assert.AreEqual(1, slicedFactSetExcludingRelatedAspects.FactModels.Count);
        }
        private Instance LoadInstanceFromExcelDocument(string fileName)
        {
            XNamespace bSharpNamespace = "http://banan-it.com/taxonomy/2018-07-05/bsharp";
            XNamespace ifrsNamespace   = "http://xbrl.ifrs.org/taxonomy/2017-03-09/ifrs-full";

            var xDeclarationsHolder = new XElement("dummy",
                                                   new XAttribute(XNamespace.Xmlns + "ifrs-full", ifrsNamespace),
                                                   new XAttribute(XNamespace.Xmlns + "banan", bSharpNamespace));

            var instance = new Instance();

            var etbUnit = new CurrencyUnit("ETB");

            instance.Units.Add(etbUnit);

            var quarter1Of2018        = new DurationPeriod(new DateTime(2018, 1, 1), new DateTime(2018, 3, 31));
            var startOfQuarter1Of2018 = new InstantPeriod(new DateTime(2017, 12, 31));
            var endOfQuarter1Of2018   = new InstantPeriod(new DateTime(2018, 3, 31));

            instance.Periods.Add(quarter1Of2018);
            instance.Periods.Add(startOfQuarter1Of2018);
            instance.Periods.Add(endOfQuarter1Of2018);

            var wsi = new Entity
            {
                Id = "wsi",
                IdentifierScheme = new Uri("http://www.sec.gov/CIK"),
                Identifier       = "WSI",
                Name             = "Walia Steel Industry PLC"
            };

            instance.Entities.Add(wsi);

            var package   = new ExcelPackage(new FileInfo(fileName));
            var worksheet = package.Workbook.Worksheets[1];

            ExcelRangeBase conceptCell         = worksheet.Cells["B2"];
            ExcelRangeBase valueCell           = worksheet.Cells["C2"];
            ExcelRangeBase startDateCell       = worksheet.Cells["D2"];
            ExcelRangeBase dateOrEndDateCell   = worksheet.Cells["E2"];
            ExcelRangeBase explicitMembersCell = worksheet.Cells["F2"];

            while (conceptCell.Value != null && valueCell.Value != null)
            {
                var concept = conceptCell.GetValue <string>();
                var value   = valueCell.Value;
                var period  = startDateCell.Value == null || string.IsNullOrEmpty(startDateCell.Value.ToString()) ?
                              new InstantPeriod(dateOrEndDateCell.GetValue <DateTime>()) :
                              (Period) new DurationPeriod(startDateCell.GetValue <DateTime>(), dateOrEndDateCell.GetValue <DateTime>());

                var conceptName = ToXName(concept, xDeclarationsHolder);
                var fact        = new Fact(conceptName, wsi, period)
                {
                    Unit          = etbUnit,
                    Value         = value.ToString(),
                    BalanceMethod = BalanceMethod.Algebraic
                };

                AddExplicitMembers(fact, explicitMembersCell.Value, xDeclarationsHolder);

                instance.Facts.Add(fact);

                conceptCell         = conceptCell.Offset(1, 0);
                valueCell           = valueCell.Offset(1, 0);
                startDateCell       = startDateCell.Offset(1, 0);
                dateOrEndDateCell   = dateOrEndDateCell.Offset(1, 0);
                explicitMembersCell = explicitMembersCell.Offset(1, 0);
            }
            return(instance);
        }
Example #4
0
 private string VerboseInstantPeriod(InstantPeriod instantPeriod, IFormatProvider formatProvider)
 {
     return(instantPeriod.Date.ToString("d", formatProvider));
 }