public void GenerujRozliczenie() { KasaModule kasaModule = KasaModule.GetInstance(Session); foreach (var kontrahent in Kontrahenci) { Wplata wpłata = null; Naleznosc należność = null; SubTable st = kasaModule.RozrachunkiIdx.WgPodmiot[kontrahent, Date.MaxValue]; foreach (RozrachunekIdx idx in st) { if (idx.Typ == TypRozrachunku.Wpłata && wpłata == null) { wpłata = (Wplata)idx.Dokument; } if (idx.Typ == TypRozrachunku.Należność && należność == null && !idx.Dokument.Bufor) { należność = (Naleznosc)idx.Dokument; } if (wpłata != null && należność != null) { break; } } if (wpłata == null || należność == null) { throw new InvalidOperationException(string.Format("Nieznalezione wpłata lub należność dla kontrahenta {0}", kontrahent.Nazwa)); } using (ITransaction t = Session.Logout(true)) { RozliczenieSP rozliczenie = new RozliczenieSP(należność, wpłata); kasaModule.RozliczeniaSP.AddRow(rozliczenie); t.Commit(); } } }
private void rozliczeniaLoad() { DateTime dataOd = okresRozliczen.DateFrom; DateTime dataDo = okresRozliczen.DateTo; List <RozliczenieRow> ds = new List <RozliczenieRow>(); var rozrachunki = ((Enova.Business.Old.Core.IRozrachunkiQuery)kontrahent).RozrachunkiQuery.Where(r => r.Data >= dataOd && r.Data <= dataDo).ToList(); foreach (var r in rozrachunki) { if (r.Dokument != null) { if (r.Dokument is Platnosc) { Platnosc platnosc = (Platnosc)r.Dokument; string numer = ""; if (platnosc.Dokument is DokumentRozliczeniowy) { RozliczenieSP ro = platnosc.RozliczeniaSPZapłatyQuery.FirstOrDefault(); if (ro != null && ro.Dokument is Platnosc) { numer = ((Platnosc)ro.Dokument).NumerDokumentu; } } ds.Add(new RozliczenieRow() { Numer = r.Numer, Data = r.Data, Termin = r.Termin, Należność = r.Należność, Zobowiązanie = r.Zobowiązanie, NumerDokumentu = numer, KwotaDokumenty = r.KwotaDokumenty, KwotaZapłaty = r.KwotaZapłaty }); } else if (r.Dokument is Zaplata) { ds.Add(new RozliczenieRow() { Numer = r.Numer, Data = r.Data, Termin = null,//r.Termin, Należność = r.Należność, Zobowiązanie = r.Zobowiązanie, KwotaDokumenty = r.KwotaDokumenty, KwotaZapłaty = r.KwotaZapłaty, Opis = ((Zaplata)r.Dokument).Opis }); var rozliczenia = ((Zaplata)r.Dokument).RozliczeniaSPQuery.ToList(); if (rozliczenia.Count == 1) { var rozliczenie = rozliczenia.First(); if (rozliczenie.Dokument is Zaplata) { ds.Last().NumerDokumentu = ((Zaplata)rozliczenie.Dokument).NumerDokumentu; } else if (rozliczenie.Dokument is Platnosc) { ds.Last().NumerDokumentu = ((Platnosc)rozliczenie.Dokument).NumerDokumentu; } } else { foreach (var ro in rozliczenia) { if (ro.Dokument is Platnosc) { string numer = ""; if (ro.Dokument is Zaplata) { numer = ((Zaplata)ro.Dokument).NumerDokumentu; } else if (ro.Dokument is Platnosc) { numer = ((Platnosc)ro.Dokument).NumerDokumentu; } Platnosc platnosc = (Platnosc)ro.Dokument; ds.Add(new RozliczenieRow() { Data = null, Termin = null, Należność = null, Zobowiązanie = null, NumerDokumentu = numer + " - " + ro.KwotaZaplatyValue + " zł" }); } } } } } } rozliczeniaBindingSource.DataSource = ds; decimal?sumaDokumenty = ds.Sum(r => r.KwotaDokumenty); decimal?sumaZaplaty = ds.Sum(r => r.KwotaZapłaty); decimal?saldo = sumaDokumenty - sumaZaplaty; sumaDokumentyTextBox.Text = string.Format("{0:C}", sumaDokumenty); sumaZapłatyTextBox.Text = string.Format("{0:C}", sumaZaplaty); saldoTextBox.Text = string.Format("{0:C}", saldo); }