private async Task HareketleriYukle() { Dictionary<string, string> WhereClauses = new Dictionary<string, string>(); if (cb2.Checked) WhereClauses["IslemTarihi"] = $"(IslemTarihi BETWEEN '{dateTimePicker3.Value.ToString("yyyy-MM-dd")}' AND '{dateTimePicker4.Value.ToString("yyyy-MM-dd")}' )"; List<int> fFP; fFP = new List<int>(); await Task.Factory.StartNew(() => { var fid = Convert.ToInt32(FirmaGruplari.SelectedNode.Name); fFP = FirmaYukleyici.GetGroupItems(fid).Select(r => r.Id).ToList(); if (!fFP.Any()) fFP.Add(fid); }, CancellationToken.None, TaskCreationOptions.None, tsch).ConfigureAwait(true); WhereClauses["Firma"] = $"((AlacakliFirma in ({string.Join(",", fFP)})) OR (BorcluFirma in ({string.Join(",", fFP)})))"; var sqlQuery = $"SELECT * FROM Hareketler {(WhereClauses.Any() ? $" WHERE {string.Join(" AND ", WhereClauses.Values)}" : string.Empty)}"; var sqlQueryDevirAlacak = $@"SELECT Cast(10000000+Row_Number() over (order by AlacakliFirma) as int) Id, AlacakliFirma, 0 BorcluFirma, 0 GelirGiderTuru ,0 Muavin,0 Kaynak ,Cast('2000-01-01' as Date) Donem, Cast('{dateTimePicker3.Value.AddDays(-1).ToString("yyyy-MM-dd")}' as Date) IslemTarihi ,Cast('2000-01-01' as Date) VadeTarihi, IsNull(Cast(SUM(Tutar) as Decimal(18,2)),0) Tutar ,IsNull(Cast(SUM(KdvMatrah) as Decimal(18,2)),0) KdvMatrah, null Aciklama FROM Hareketler WHERE {$" IslemTarihi < '{(!cb2.Checked ? "1900-01-01" : dateTimePicker3.Value.ToString("yyyy-MM-dd"))}' AND": string.Empty} (AlacakliFirma in ({string.Join(",", fFP)})) GROUP BY AlacakliFirma"; var sqlQueryDevirBorc = $@"SELECT Cast(20000000+Row_Number() over (order by BorcluFirma) as int) Id, 0 AlacakliFirma, BorcluFirma, 0 GelirGiderTuru ,0 Muavin,0 Kaynak,Cast('2000-01-01' as Date) Donem, Cast('{dateTimePicker3.Value.AddDays(-1).ToString("yyyy-MM-dd")}' as Date) IslemTarihi ,Cast('2000-01-01' as Date) VadeTarihi, IsNull(Cast(SUM(Tutar) as Decimal(18,2)),0) Tutar ,IsNull(Cast(SUM(KdvMatrah) as Decimal(18,2)),0) KdvMatrah, null Aciklama FROM Hareketler WHERE {$" IslemTarihi < '{(!cb2.Checked ? "1900-01-01" : dateTimePicker3.Value.ToString("yyyy-MM-dd"))}' AND": string.Empty} (BorcluFirma in ({string.Join(",", fFP)})) GROUP BY BorcluFirma"; using (var db1 = new kocEntities()) using (var db2 = new kocEntities()) using (var db3 = new kocEntities()) { db1.Configuration.LazyLoadingEnabled = false; db1.Configuration.ProxyCreationEnabled = false; db2.Configuration.LazyLoadingEnabled = false; db2.Configuration.ProxyCreationEnabled = false; db3.Configuration.LazyLoadingEnabled = false; db3.Configuration.ProxyCreationEnabled = false; await Task.WhenAll<List<Hareketler>>(new Task<List<Hareketler>>[] { db1.Hareketler.SqlQuery(sqlQuery, new object[] { }).ToListAsync(), db2.Hareketler.SqlQuery(sqlQueryDevirAlacak, new object[] { }).ToListAsync(), db3.Hareketler.SqlQuery(sqlQueryDevirBorc, new object[] { }).ToListAsync() }).ContinueWith((t) => { var hareketListesi = t.Result[0]; var DevirAlacakTutar = t.Result[1]; var DevirBorcTutar = t.Result[2]; toolStripStatusLabel1.Text = $"Toplam Bakiye: Hesaplanıyor..."; firmaCarileriBindingSource.SuspendBinding(); var firmadevir = (from da in DevirAlacakTutar join db in DevirBorcTutar on da.AlacakliFirma equals db.BorcluFirma into temp from db in temp.DefaultIfEmpty(new Hareketler { AlacakliFirma = da.AlacakliFirma, Tutar = 0 }) select new FirmaDevirTutar { firmaId = da.AlacakliFirma, alacak = da.Tutar, borc = db.Tutar, bakiye = da.Tutar - db.Tutar }) .Union( from db in DevirBorcTutar join da in DevirAlacakTutar on db.BorcluFirma equals da.AlacakliFirma into temp from da in temp.DefaultIfEmpty(new Hareketler { BorcluFirma = db.BorcluFirma, Tutar = 0 }) select new FirmaDevirTutar { firmaId = db.BorcluFirma, alacak = da.Tutar, borc = db.Tutar, bakiye = da.Tutar - db.Tutar } , new FirmaDevirTutarComparer()).ToList(); var firmaDevirBakiyeleri = firmadevir.ToDictionary(r => r.firmaId, r => r); var devircarileri = firmaDevirBakiyeleri.Values.Where(fdb => TabloYukleyici<Firmalar>.AllData.ContainsKey(fdb.firmaId)).Select(fdb => { return new FirmaCarileri { Aciklama = $" {dateTimePicker3.Value} Öncesi Devir Bakiyesi", Alacak = fdb.alacak, Bakiye = fdb.bakiye, Borc = fdb.borc, IslemTarihi = dateTimePicker3.Value.AddDays(-1), FirmaAdi = TabloYukleyici<Firmalar>.AllData[fdb.firmaId].Etiket, GelirGiderTurAdi = "DEVİR BAKİYESİ", FirmaId = fdb.firmaId, GelirGiderTuru = -2, Id = 0 }; }).ToList(); var ds = new List<FirmaCarileri>(devircarileri); foreach (var item in hareketListesi.OrderBy(hl => hl.IslemTarihi)) { var b = FirmaGruplari.SelectedNode.Name == item.AlacakliFirma.ToString() || FirmaGruplari.SelectedNode.Nodes.Find(item.AlacakliFirma.ToString(), true).Any(); var firmaId = b ? item.AlacakliFirma : item.BorcluFirma; var firmaAdi = TabloYukleyici<Firmalar>.AllData.ContainsKey(firmaId) ? TabloYukleyici<Firmalar>.AllData[firmaId].Etiket : "Bilinmeyen Firma"; var record = new FirmaCarileri { Id = item.Id, IslemTarihi = item.IslemTarihi, FirmaId = firmaId, GelirGiderTuru = item.GelirGiderTuru, Borc = b ? 0 : item.Tutar, Alacak = b ? item.Tutar : 0, Aciklama = item.Aciklama, FirmaAdi = firmaAdi, GelirGiderTurAdi = item.GelirGiderTuru == -1 ? // Virman "VİRMAN" : ( item.GelirGiderTuru == 0 ? //Ödeme & Tahsilat ( FirmaGruplari.SelectedNode.FullPath.Contains("KOÇ GRUP") ? (b ? "ÖDEME" : "TAHSİLAT") : (b ? "TAHSİLAT" : "ÖDEME") ) : ( // Fatura Giriş Çıkışı TabloYukleyici<GelirGiderTurleri>.AllData[item.GelirGiderTuru].Etiket ) ) }; if (!firmaDevirBakiyeleri.ContainsKey(record.FirmaId)) firmaDevirBakiyeleri[record.FirmaId] = new FirmaDevirTutar { bakiye = 0, firmaId = record.FirmaId }; firmaDevirBakiyeleri[record.FirmaId].bakiye += (record.Alacak - record.Borc); record.Bakiye = firmaDevirBakiyeleri[record.FirmaId].bakiye; ds.Add(record); } if (groupResults.Checked) { hareketlerDataGridView.Columns[2].Visible = hareketlerDataGridView.Columns[3].Visible = hareketlerDataGridView.Columns[4].Visible = hareketlerDataGridView.Columns[5].Visible = hareketlerDataGridView.Columns[7].Visible = false; var id = 1; firmaCarileriBindingSource.DataSource = new BindingList<FirmaCarileri>( ds.GroupBy(r => { foreach (TreeNode node in FirmaGruplari.SelectedNode.Nodes) { if (node.Name == r.FirmaId.ToString() || node.Nodes.Find(r.FirmaId.ToString(), true).Any()) return node; } return null; }, (g, r) => new FirmaCarileri { Id = id++, FirmaAdi = (g ?? FirmaGruplari.SelectedNode).Text, Bakiye = (r.Sum(rr => rr.Alacak) - r.Sum(rr => rr.Borc)), FirmaId = Convert.ToInt32((g ?? FirmaGruplari.SelectedNode).Name) }).OrderBy(r => r.FirmaAdi).ToList() ); } else { hareketlerDataGridView.Columns[2].Visible = hareketlerDataGridView.Columns[3].Visible = hareketlerDataGridView.Columns[4].Visible = hareketlerDataGridView.Columns[5].Visible = hareketlerDataGridView.Columns[7].Visible = true; firmaCarileriBindingSource.DataSource = new BindingList<FirmaCarileri>(ds.OrderBy(d => d.FirmaAdi).ThenBy(d => d.IslemTarihi).ToList()); } toolStripStatusLabel1.Text = $"Toplam Bakiye: {ds.Sum(r=>r.Alacak-r.Borc).ToString("C0", CultureInfo.GetCultureInfo("tr-TR"))}"; firmaCarileriBindingSource.ResumeBinding(); }, CancellationToken.None, TaskContinuationOptions.None, tsch) .ConfigureAwait(true); } }
private async Task HareketleriYukle() { Dictionary<string, string> WhereClauses = new Dictionary<string, string>(); var startDate = dateTimePicker3.Value.AddDays(1 - dateTimePicker3.Value.Day); var endDate = dateTimePicker4.Value.AddMonths(1); endDate = endDate.AddDays(-endDate.Day); if (cb2.Checked) WhereClauses["IslemTarihi"] = $"({(it.Checked ? "IslemTarihi" : (yt.Checked ? "Donem" : "VadeTarihi"))} BETWEEN '{startDate.ToString("yyyy-MM-dd")}' AND '{endDate.ToString("yyyy-MM-dd")}' )"; List<int> gelirgidergruplari, firmagruplari; string gelirgider = ""; gelirgidergruplari = firmagruplari = new List<int>(); await Task.Factory.StartNew(() => { var fid = Convert.ToInt32(FirmaGruplari.SelectedNode.Name); firmagruplari = FirmaYukleyici.GetGroupItems(fid).Select(r => r.Id).ToList(); if (!firmagruplari.Any()) firmagruplari.Add(fid); var gid = Convert.ToInt32(GelirGiderGruplari.SelectedNode.Name); gelirgidergruplari = GGKYukleyici.GetGroupItems(gid).Select(r => r.Id).ToList(); if (!gelirgidergruplari.Any()) gelirgidergruplari.Add(gid); gelirgider = (virmanlar || (GelirGiderGruplari.SelectedNode.Name == "1" || GelirGiderGruplari.Nodes[0].Nodes.Find(GelirGiderGruplari.SelectedNode.Name, true).Any())) ? "AlacakliFirma" : "BorcluFirma"; }, CancellationToken.None, TaskCreationOptions.None, tsch).ConfigureAwait(true); if (!virmanlar) WhereClauses["GelirGiderTuru"] = $"(GelirGiderTuru in ({string.Join(",", gelirgidergruplari)}))"; WhereClauses["Firma"] = $"({gelirgider} in ({string.Join(",", firmagruplari)}))"; var sqlQuery = $"SELECT * FROM Hareketler {(WhereClauses.Any() ? $" WHERE {string.Join(" AND ", WhereClauses.Values)}" : string.Empty)}"; using (var db1 = new kocEntities()) { db1.Configuration.LazyLoadingEnabled = false; db1.Configuration.ProxyCreationEnabled = false; await Task.WhenAll<List<Hareketler>>(new Task<List<Hareketler>>[] { db1.Hareketler.SqlQuery(sqlQuery, new object[] { }).ToListAsync(), }).ContinueWith((t) => { var hareketListesi = t.Result[0]; var ds = new List<Hareketler>(hareketListesi); List<ExpandoObject> pivotData; var dsTable = new DataTable(); dsTable.Columns.Add("GelirGiderTürü"); var dsTotalTable = new DataTable(); dsTotalTable.Columns.Add("GelirGiderTürü"); if (groupResults.Checked) { TreeView tw = virmanlar ? FirmaGruplari : GelirGiderGruplari; pivotData = ds.GroupBy(r => { foreach (TreeNode node in tw.SelectedNode.Nodes) { if (virmanlar) { if (node.Name == r.AlacakliFirma.ToString() || node.Nodes.Find(r.AlacakliFirma.ToString(), true).Any()) return node; } else { if (node.Name == r.GelirGiderTuru.ToString() || node.Nodes.Find(r.GelirGiderTuru.ToString(), true).Any()) return node; } } return tw.SelectedNode.Nodes.Count == 0 ? tw.SelectedNode : null; }, (g, r) => { var record = new ExpandoObject(); var drecord = (IDictionary<string, object>)record; drecord["GelirGiderTürü"] = (g == null) ? "Bilinmeyen Gelir Gider Türü" : g.Text;//g.Text;// foreach (var item in r.GroupBy(r1 => { var tarih = it.Checked ? r1.IslemTarihi : (yt.Checked ? r1.Donem : r1.VadeTarihi); return new { year = tarih.Year, month = tarih.Month }; }, (g1, r2) => new { year = g1.year, month = g1.month, total = r2.Sum(rr => rr.Tutar) })) { var s = $"{item.year}-{item.month.ToString("D2")}"; drecord[s] = item.total.ToString("N0"); } return record; }).ToList(); } else { pivotData = ds.GroupBy(r => r.GelirGiderTurAdi, (g, r) => { var record = new ExpandoObject(); var drecord = (IDictionary<string, object>)record; drecord["GelirGiderTürü"] = g; foreach (var item in r.GroupBy(r1 => { var tarih = it.Checked ? r1.IslemTarihi : (yt.Checked ? r1.Donem : r1.VadeTarihi); return new { year = tarih.Year, month = tarih.Month }; }, (g1, r2) => new { year = g1.year, month = g1.month, total = r2.Sum(rr => rr.Tutar) })) { var s = $"{item.year}-{item.month.ToString("D2")}"; drecord[s] = item.total.ToString("N0"); } return record; }).ToList(); } var columns = pivotData.SelectMany(pc => ((IDictionary<string, object>)pc).Keys).Distinct().Except(new string[] { "GelirGiderTürü" }).ToList(); var oList = new Dictionary<string, object>(); oList.Add("GelirGiderTürü", "Genel Toplam"); foreach (var column in columns.OrderBy(c => c)) { var d = DateTime.ParseExact(column + "-1", "yyyy-M-d", CultureInfo.InvariantCulture).ToString("MMM\\'yy", CultureInfo.CreateSpecificCulture("tr")); dsTable.Columns.Add(d); dsTotalTable.Columns.Add(d); oList[d] = 0; } foreach (var data in pivotData) { var dataRow = dsTable.Rows.Add(((IDictionary<string, object>)data).Values.ToArray()); foreach (var column in columns.OrderBy(c => c)) { var columnName = DateTime.ParseExact(column + "-1", "yyyy-M-d", CultureInfo.InvariantCulture).ToString("MMM\\'yy", CultureInfo.CreateSpecificCulture("tr")); var ddata = (IDictionary<string, object>)data; if (ddata.ContainsKey(column)) { dataRow[columnName] = ddata[column]; oList[columnName] = Convert.ToDouble(oList[columnName]) + Convert.ToDouble(ddata[column]); } else { dataRow[columnName] = 0; } } } dsTotalTable.Rows.Add(oList.Values.Select(v => !(v is string) ? ((double)v).ToString("N0") : v).ToArray()); totalGrid.DataSource = dsTotalTable; totalGrid.AutoGenerateColumns = false; totalGrid.Columns.Clear(); totalGrid.AutoGenerateColumns = true; hareketlerDataGridView.DataSource = dsTable; hareketlerDataGridView.AutoGenerateColumns = false; hareketlerDataGridView.Columns.Clear(); hareketlerDataGridView.AutoGenerateColumns = true; for (int i = 1; i < hareketlerDataGridView.Columns.Count; i++) { hareketlerDataGridView.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; totalGrid.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } }, CancellationToken.None, TaskContinuationOptions.None, tsch) .ConfigureAwait(true); } }