示例#1
0
        public void TestKorektyCzesciowej()
        {
            IList <PozycjaFakturyDC> listaPozycjiFaktury = new List <PozycjaFakturyDC>();

            listaPozycjiFaktury.Add(new PozycjaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Gacie")),
                Ilosc   = 5,
                CenaJednostkowaNetto = 30
            });
            listaPozycjiFaktury.Add(new PozycjaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Skarpetki")),
                Ilosc   = 5,
                CenaJednostkowaNetto = 10
            });;

            listaPozycjiFaktury.Add(new PozycjaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Skarpety")),
                Ilosc   = 5,
                CenaJednostkowaNetto = 20
            });;


            var factory = new InvoiceFactory(objectSpace);
            var faktura = factory.UtworzFakture(listaPozycjiFaktury);

            objectSpace.CommitChanges();
            Assert.IsNotNull(faktura, "nie utworzono faktury");
            Assert.AreEqual(3, faktura.PozycjeFaktury.Count());
            Assert.AreEqual(345, faktura.WartoscBrutto);

            IList <PozycjaKorygujacaFakturyDC> listaPozycjiDoSkorygowania = new List <PozycjaKorygujacaFakturyDC>();
            var korektaPusta = factory.UtworzKorekte(faktura, listaPozycjiDoSkorygowania);

            Assert.IsNull(korektaPusta, "Utworzono korektę chociaż nie powinno");
            if (korektaPusta != null)
            {
                korektaPusta.Delete();
            }

            objectSpace.CommitChanges();

            listaPozycjiDoSkorygowania.Add(new PozycjaKorygujacaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Gacie")),
                Ilosc   = 0,
                CenaJednostkowaNetto = 30
            });
            listaPozycjiDoSkorygowania.Add(new PozycjaKorygujacaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Skarpetki")),
                Ilosc   = 0,
                CenaJednostkowaNetto = 10
            });

            listaPozycjiDoSkorygowania.Add(new PozycjaKorygujacaFakturyDC()
            {
                Produkt = objectSpace.FindObject <Produkt>(new BinaryOperator(nameof(Produkt.Nazwa), "Skarpety")),
                Ilosc   = 0,
                CenaJednostkowaNetto = 20
            });

            var korekta = factory.UtworzKorekte(faktura, listaPozycjiDoSkorygowania);

            Assert.IsNotNull(korekta, "nie utworzono faktury korygujacej");
            Assert.AreSame(faktura.Klient, korekta.Klient, "Faktura wystawiona innego klienta niz korekta");

            korekta.PrzeliczSumy();
            objectSpace.CommitChanges();

            Assert.AreEqual(3, korekta.PozycjeFaktury.Count(), "Korekta częsciowa ma zła liczbę pozycji");

            var SumaFakturPoKorekcie = objectSpace.GetObjectsQuery <Faktura>().Sum(b => b.WartoscBrutto);

            Assert.AreEqual(0, SumaFakturPoKorekcie, "Brutto korekty nie zeruje sie z bruttem faktury by objectQuery");

            faktura.Delete();
            korekta.Delete();
            objectSpace.CommitChanges();
        }