示例#1
0
 public void LoadTemplate4P1WithIndustryVorlageTagOk()
 {
     string fn = @"Daten\testTemplateInvoiceIndustrySample.xml";
     var invoice = InvoiceFactory.LoadTemplate(fn);
     Assert.IsNotNull(invoice);
     Assert.AreEqual(InvoiceSubtypes.ValidationRuleSet.Industries, invoice.InvoiceSubtype.VariantOption);
 }
示例#2
0
        public void TaxItemTest(string inputFile, string outputFile, Models.EbIVersion ebIVersion)
        {
            var invoice = InvoiceFactory.LoadTemplate(inputFile);

            invoice.PrintDump();
            EbInterfaceResult result = invoice.Save(outputFile, ebIVersion);

            Assert.That(result.ResultType == ResultType.IsValid);
            var inputXml = XDocument.Load(inputFile);
            var savedXml = XDocument.Load(outputFile);
            var inResult = inputXml.Descendants()
                           .Where(p1 => p1.Descendants().Count() == 0)
                           .Select(p => new NodeList
            {
                NodePath = p.GetPath(),
                Value    = p.Value
            }).Distinct().OrderBy(n => n.NodePath).ToList();
            var outResult = savedXml.Descendants().Where(p1 => p1.Descendants().Count() == 0).Select(p => new NodeList
            {
                NodePath = p.GetPath(),
                Value    = p.Value
            }).Distinct().OrderBy(n => n.NodePath).ToList();

            Console.WriteLine("Nodes not in Output -----------------------");
            var notInOut = inResult.Where(p => !outResult.Any(p2 => p2.NodePath == p.NodePath)).ToList();

            PrintDiff(notInOut);
            Console.WriteLine("Nodes not in Input -----------------------");

            var notInIn = outResult.Where(p => !inResult.Any(p2 => p2.NodePath == p.NodePath)).ToList();

            PrintDiff(notInIn);
            Console.WriteLine("Value different -----------------------");
            var valDif = inResult.Where(p => outResult.Any(p2 => p2.NodePath == p.NodePath && p2.Value != p.Value));
        }
示例#3
0
 public void SaveTemplateAsIndustryOk()
 {
     string fn = @"Daten\Test-ebInterfaceRechn-2014-500-2014-03-19.xml";
     var invoice = InvoiceFactory.LoadTemplate(fn);
     invoice.InvoiceSubtype = InvoiceSubtypes.GetSubtype(InvoiceSubtypes.ValidationRuleSet.Industries);
     invoice.SaveTemplate(@"Daten\testTemplateInvoiceIndustry.xml");
     Assert.IsNotNull(invoice);
 }
示例#4
0
 public void LoadTemplateTestOk(string rechnungFn)
 {
     string fn = rechnungFn;// @"Daten\Test-ebInterfaceRechn-2014-500-2014-03-19.xml";
     var invoice = InvoiceFactory.LoadTemplate(fn);
     Assert.IsNotNull(invoice);
     Console.WriteLine($"{invoice.Version.ToString()}:\t{rechnungFn}");
     invoice.PrintDump();
 }
示例#5
0
        public void LoadTemplateTestNoGeneratingSystem()
        {
            string fn = @"Daten\DotNetApiCreatedInvoice.xml";
            var invoice = InvoiceFactory.LoadTemplate(fn);

            // invoice.Save(@"Daten\testInvoice.xml");
            Assert.AreEqual(invoice.InvoiceSubtype.VariantOption, InvoiceSubtypes.ValidationRuleSet.Invalid);
        }
示例#6
0
        public void GetItemLoadRabattTestOk()
        {
            _common.Invoice = InvoiceFactory.LoadTemplate(Common.InvTest);

            var det     = DetailsListConverter.Load(_common.Invoice.Details.ItemList, _common.UContainer, false);
            var detList = DetailsListConverter.ConvertToItemList(det, "Z01");
            var det2    = DetailsListConverter.Load(detList, _common.UContainer, false);

            Assert.AreEqual(det[0].Rabatt, det2[0].Rabatt);
        }
示例#7
0
        public void LoadTest()
        {
            _common.Invoice = InvoiceFactory.LoadTemplate(Common.InvTest);
            var det = DetailsListConverter.Load(_common.Invoice.Details.ItemList, _common.UContainer, false);

            Assert.IsNotNull(det);
            Assert.AreEqual((int)4, det.Count);
            Assert.AreEqual("DAY", det[0].Einheit);
            Assert.AreEqual("LS", det[2].Einheit);
        }
示例#8
0
 public void SaveTemplateOk(string fnSource)
 {
     string outDir = Path.GetDirectoryName(fnSource);
     string saveFn = Path.Combine(outDir, Path.GetFileNameWithoutExtension(fnSource) + "-template.xml");
     File.Delete(saveFn);
     var invoice = InvoiceFactory.LoadTemplate(fnSource);
     invoice.PrintDump();
     Assert.IsNotNull(invoice);
     //Console.WriteLine(invoice.Dump());
     invoice.SaveTemplate(saveFn);
 }
示例#9
0
        public void TotalsAndTaxTest(string inputFn)
        {
            XDocument xInv  = XDocument.Load(inputFn);
            var       attrs = xInv.Root.Attributes().
                              Where(p => p.IsNamespaceDeclaration == true).
                              FirstOrDefault(x => x.Name.LocalName == "eb");

            var invoice = InvoiceFactory.LoadTemplate(inputFn);

            Console.WriteLine($"{attrs.Value}: {inputFn}");
            var totals = from a in invoice.Details.ItemList[0].ListLineItem
                         group a by 1 into g
                         select new
            {
                netto     = g.Sum(x => x.LineItemAmount),
                ustGesamt = g.Sum(x => x.TaxItem.TaxPercent.Value * x.LineItemAmount / 100).FixedFraction(2)
            };

            totals.PrintDump();
            var tax = invoice.Details.ItemList[0].ListLineItem
                      .GroupBy(s => new
            {
                Prozent = s.TaxItem.TaxPercent.Value,
                Code    = s.TaxItem.TaxPercent.TaxCategoryCode
            })
                      .Select(p => new TaxItemType
            {
                TaxPercent = new TaxPercentType()
                {
                    TaxCategoryCode = p.Key.Code,
                    Value           = p.Key.Prozent
                },
                TaxableAmount = p.Sum(x => x.LineItemAmount),
                TaxAmount     = (p.Sum(x => x.LineItemAmount) * p.Key.Prozent / 100),
            });

            tax.PrintDump();
            var totale = totals.FirstOrDefault();

            Assert.AreEqual(totale.ustGesamt, invoice.TaxAmountTotal, "USt Gesamt");
            Assert.AreEqual(totale.ustGesamt + totale.netto, invoice.TotalGrossAmount, "Gesamt Betrag");
            Assert.AreEqual(tax.Count(), invoice.Tax.TaxItem.Count, "TaxItem Count");
            Assert.Multiple(() =>
            {
                var taxLIst = tax.ToList();
                for (int i = 0; i < taxLIst.Count; i++)
                {
                    Assert.AreEqual(taxLIst[i].TaxableAmount, invoice.Tax.TaxItem[i].TaxableAmount, "TaxableAmount");
                    Assert.AreEqual(taxLIst[i].TaxAmount, invoice.Tax.TaxItem[i].TaxAmount, "Amount");
                    Assert.AreEqual(taxLIst[i].TaxPercent.TaxCategoryCode, invoice.Tax.TaxItem[i].TaxPercent.TaxCategoryCode, "Percent");
                    Assert.AreEqual(taxLIst[i].TaxPercent.Value, invoice.Tax.TaxItem[i].TaxPercent.Value, "Value");
                }
            });
        }
示例#10
0
        public void MapV4P1ToVmTest()
        {
            string fn      = @"Daten\Test-ebInterfaceRechn-2014-500-2014-03-19.xml";
            var    invoice = InvoiceFactory.LoadTemplate(fn);

            // var invVm = DocumentViewModel.MapV4P1ToVm(invoice as ebIModels.Schema.ebInterface4p1.InvoiceType);
            // var inv4p1 = MappingService.MapVMToV4p1(invVm);
            //Assert.AreEqual(new DateTime(2014, 04, 19), invoice.PaymentConditions.DueDate);
            Assert.AreEqual(CountryCodeType.AT.ToString(), invoice.Biller.Address.Country.CountryCode);
            Assert.AreEqual("Österreich", invoice.Biller.Address.Country.Value);
            invoice.SaveTemplate(@"Daten\ConvertedInvoice.xml");
            Assert.IsNotNull(invoice);
        }
示例#11
0
        public void SaveInvoiceTest(string inputFile, string outputFile, Models.EbIVersion ebIVersion, string expectedAttr)
        {
            var invoice = InvoiceFactory.LoadTemplate(inputFile);
            //invoice.PrintDump();
            EbInterfaceResult result = invoice.Save(outputFile, ebIVersion);

            result.PrintDump();
            Assert.That(result.ResultType == ResultType.IsValid, $"Validation Error: {outputFile} ");
            XDocument xInv  = XDocument.Load(outputFile);
            var       attrs = xInv.Root.Attributes().Where(p => p.IsNamespaceDeclaration == true).FirstOrDefault(x => x.Name.LocalName == "eb");

            Assert.IsNotNull(attrs);
            Assert.AreEqual(expectedAttr, attrs.Value);
        }
示例#12
0
        private void UpdateDatesInTestTemplates()
        {
            var dirList = Directory.GetFiles(DataFolder, "*.xml");

            foreach (string templFileName in dirList)
            {
                IInvoiceModel inv        = InvoiceFactory.LoadTemplate(templFileName);
                DateTime      oldInvDate = inv.InvoiceDate; // Save Invoicedate
                inv.InvoiceDate = DateTime.Today;
                int days = inv.InvoiceDate.Days(oldInvDate);
                if (inv.Delivery != null)
                {
                    if (inv.Delivery.Item != null)
                    {
                        if (inv.Delivery.Item is DateTime deliveryDate)
                        {
                            inv.Delivery.Item = deliveryDate.AddDays(days);
                        }
                        if (inv.Delivery.Item is PeriodType period)
                        {
                            if (period.FromDate != DateTime.MinValue)
                            {
                                period.FromDate = ((DateTime)period.FromDate).AddDays(days);
                            }
                            if (period.ToDate != DateTime.MinValue)
                            {
                                period.ToDate = ((DateTime)period.ToDate).AddDays(days);
                            }
                            inv.Delivery.Item = period;
                        }
                    }
                }
                if (inv.PaymentConditions != null)
                {
                    inv.PaymentConditions.DueDate = inv.PaymentConditions.DueDate.AddDays(days);
                }
                if (inv.PaymentConditions.Discount != null)
                {
                    foreach (var item2 in inv.PaymentConditions.Discount)
                    {
                        item2.PaymentDate = item2.PaymentDate.AddDays(days);
                    }
                }
                inv.SaveTemplate(templFileName);
            }
        }
示例#13
0
        public void CalculateTotalsTest()
        {
            string testInv = @"C:\GitHub\ebinterface-word-plugin\eRechnungWordPlugIn\UnitTests\ebIViewModelsTests\Daten\Test Vorlage 2014-500-2014-03-19.XML";

            InvVm.LoadTemplateCommand.Execute(testInv);
            var controllInvoice = InvoiceFactory.LoadTemplate(testInv);

            Assert.AreEqual(1, controllInvoice.Details.ItemList.Count, "Count Details.ItemList");
            Assert.AreEqual(controllInvoice.Details.ItemList[0].ListLineItem.Count, InvVm.DetailsView.Count, "Details Count");
            var totals = from a in controllInvoice.Details.ItemList[0].ListLineItem
                         group a by 1 into g
                         select new
            {
                netto     = g.Sum(x => x.LineItemAmount),
                ustGesamt = g.Sum(x => x.TaxItem.TaxPercent.Value * x.LineItemAmount / 100)
            };

            totals.PrintDump();
            var tax = controllInvoice.Details.ItemList[0].ListLineItem.GroupBy(s => new { s.TaxItem.TaxPercent.Value, s.TaxItem.TaxPercent.TaxCategoryCode })
                      .Select(p => new
            {
                Percent       = p.Key.Value,
                Code          = p.Key.TaxCategoryCode,
                taxableAmount = p.Sum(x => x.LineItemAmount),
                taxAmount     = p.Sum(x => x.LineItemAmount) * p.Key.Value / 100,
            });

            tax.PrintDump();
            Assert.Multiple(() =>
            {
                for (int i = 0; i < InvVm.DetailsView.Count; i++)
                {
                    var vmDetail        = InvVm.DetailsView[i];
                    vmDetail.UomEntries = new List <UnitOfMeasureEntries>();                                // um den Object Dump klein zu halten
                    vmDetail.UoMList    = new System.ComponentModel.BindingList <UnitOfMeasureViewModel>(); // um den Object Dump klein zu halten
                    vmDetail.VatList    = new System.ComponentModel.BindingList <VatDefaultValue>();

                    var cDetail = controllInvoice.Details.ItemList[0].ListLineItem[i];
                    Console.WriteLine($"in Template Pos {cDetail.PositionNumber} ****************************************");

                    // cDetail.PrintDump();

                    Console.WriteLine($"Zeile {i} in ViewModel, Pos {cDetail.PositionNumber} ****************************************");
                    // vmDetail.PrintDump();

                    Assert.AreEqual(cDetail.ArticleNumber[0].Value, vmDetail.ArtikelNr, $"Pos {cDetail.PositionNumber}Artikelnr");
                    Assert.AreEqual(cDetail.LineItemAmount, vmDetail.NettoBetragZeile, $"Pos {cDetail.PositionNumber}, LineItemAmount");
                    Assert.AreEqual(cDetail.TaxItem.TaxAmount, vmDetail.MwStBetragZeile, $"Pos {cDetail.PositionNumber}, TaxAmount");
                    Assert.AreEqual(cDetail.TaxItem.TaxableAmount, vmDetail.NettoBetragZeile, $"Pos {cDetail.PositionNumber}, TaxableAmount");
                    Assert.AreEqual(cDetail.TaxItem.TaxPercent.Value, vmDetail.VatItem.MwStSatz, $"Pos {cDetail.PositionNumber}, TaxPercent.Value");
                }
            });
            Assert.AreEqual(controllInvoice.Tax.TaxItem.Count, InvVm.VatView.VatViewList.Count, "Tax.TaxItem.Count");
            Assert.Multiple(() =>
            {
                for (int i = 0; i < InvVm.VatView.VatViewList.Count; i++)
                {
                    var vmVat    = InvVm.VatView.VatViewList[i];
                    var cTaxItem = controllInvoice.Tax.TaxItem[i];
                    Assert.AreEqual(cTaxItem.TaxPercent.TaxCategoryCode, vmVat.TaxCode, "TaxPercent.TaxCategoryCode");
                    Assert.AreEqual(cTaxItem.TaxPercent.Value, vmVat.VatPercent, "TaxPercent.Value");
                    Assert.AreEqual(cTaxItem.TaxableAmount, vmVat.VatBaseAmount, "TaxableAmount");
                    Assert.AreEqual(cTaxItem.TaxAmount, vmVat.VatAmount, "TaxAmount");
                }
            });
            //Console.WriteLine("VAT ***********************************");
            //InvVm.VatView.VatViewList.PrintDump();
            //controllInvoice.Tax.TaxItem.PrintDump();
            Assert.Multiple(() =>
            {
                Assert.AreEqual(controllInvoice.TotalGrossAmount, InvVm.VmInvTotalAmountDecimal, nameof(controllInvoice.TotalGrossAmount));
                Assert.AreEqual(controllInvoice.NetAmount, InvVm.VmInvTotalNetAmount.ToDecimal(), nameof(controllInvoice.NetAmount));
                Assert.AreEqual(controllInvoice.TaxAmountTotal, InvVm.VmInvTaxAmount.ToDecimal(), nameof(controllInvoice.TaxAmountTotal));
            });
        }
示例#14
0
 public void LoadTemplate4P1WithVorlageTagOk()
 {
     string fn = @"Daten\testTemplateInvoiceTest.xml";
     var invoice = InvoiceFactory.LoadTemplate(fn);
     Assert.IsNotNull(invoice);
 }
示例#15
0
 public void Setup(string fn)
 {
     Invoice = InvoiceFactory.LoadTemplate(InvTemplate);
 }
示例#16
0
 public Common(string fn)
 {
     UContainer = ThisDocument.Register4Unity();
     UpdateDatesInTestTemplates();
     Invoice = InvoiceFactory.LoadTemplate(fn);
 }