void prosesRow(SumberData sumber, String keterangan) { Database1Entities db = new Database1Entities(); var allPkt = db.Pkts.ToList(); Int64 d100 = (Int64)sumber.d100, d50 = (Int64)sumber.d50, d20 = (Int64)sumber.d20, d10 = (Int64)sumber.d10, d5 = (Int64)sumber.d5, d2 = (Int64)sumber.d2; Int64 totalValue = (Int64)(d100 + d50 + d20 + d10 + d5 + d2); DataProses tempResult = new DataProses(); String vault = sumber.namaBank.Split('-')[0]; if (sumber.sumberDana.Split('-')[1].Trim() == "CCAS") { sumber.sumberDana = sumber.sumberDana.Replace("CCAS", "CCASA"); } Console.WriteLine("Masuk Proses Row"); //Console.WriteLine(sumber.sumberDana); String kodePktCabangSumber = sumber.sumberDana.Split('-')[1].Trim(); String sumberDana = allPkt.Where(x => x.kodePktCabang == kodePktCabangSumber).Select(x => x.namaPkt).FirstOrDefault(), vendorSumber = allPkt.Where(x => x.kodePkt == kodePktCabangSumber).Select(x => x.vendor).FirstOrDefault(), kodeTujuan = sumber.kodeTujuan.Trim(); if (kodeTujuan.Contains("-")) { kodeTujuan = kodeTujuan.Split('-')[1].Trim(); } String namaTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.namaPkt).FirstOrDefault(); //Console.WriteLine(sumberDana); tempResult.namaTujuan = namaTujuan; tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; tempResult.vendorSumber = vendorSumber; Int64 sisa = limitDelivery; //100K if (d100 > sisa) { while (d100 > sisa) { tempResult.denom100 = sisa; d100 -= sisa; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d100 > 0) { tempResult.denom100 = d100; sisa -= d100; } //50K if (d50 > sisa) { while (d50 > sisa) { tempResult.denom50 = sisa; d50 -= sisa; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d50 > 0) { tempResult.denom50 = d50; sisa -= d50; } //20K if (d20 > sisa) { while (d20 > sisa) { tempResult.denom20 = sisa; d20 -= sisa; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d20 > 0) { tempResult.denom20 = d20; sisa -= d20; } //10K if (d10 > sisa) { while (d10 > sisa) { tempResult.denom10 = sisa; d10 -= sisa; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d10 > 0) { tempResult.denom10 = d10; sisa -= d10; } //5K if (d5 > sisa) { while (d5 > sisa) { tempResult.denom5 = sisa; d5 -= sisa; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d5 > 0) { tempResult.denom5 = d5; sisa -= d5; } //2K if (d2 > sisa) { while (d2 > sisa) { tempResult.denom2 = sisa; d2 -= sisa; result.Add(tempResult); sisa = limitDelivery; tempResult = new DataProses(); tempResult.sumberDana = sumberDana; tempResult.tujuan = vault; tempResult.keterangan = keterangan; } } if (d2 > 0) { tempResult.denom2 = d2; sisa -= d2; } if (tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2 > 0) { tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); } }
private void SaveBtn_Click(object sender, EventArgs e) { SaveFileDialog sv = new SaveFileDialog(); sv.Filter = Variables.csvFilter; if (sv.ShowDialog() == DialogResult.OK) { bool success = true; try { File.WriteAllText(sv.FileName, ""); } catch { success = false; MessageBox.Show("File " + sv.FileName + " sedang dibuka atau digunakan proses lain."); } if (success) { loadForm.ShowSplashScreen(); Database1Entities db = new Database1Entities(); var allPkt = db.Pkts.ToList(); result = new List <DataProses>(); foreach (var temp in finalData) { foreach (var temp2 in temp) { String vault = temp2.namaBank.Split('-')[1].Trim(), namaBank = temp2.namaBank.Split('-')[0].Trim(); String kodeSumber = temp2.sumberDana.Trim(), kodeTujuan = temp2.kodeTujuan.Trim(); if (kodeSumber.Contains("-")) { kodeSumber = kodeSumber.Split('-')[1].Trim(); } else { kodeSumber = "Kirim"; } if (kodeTujuan.Contains("-")) { kodeTujuan = kodeTujuan.Split('-')[1].Trim(); } String vendorSumber = allPkt.Where(x => x.kodePktCabang == kodeSumber).Select(x => x.vendor).FirstOrDefault(), vendorTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.vendor).FirstOrDefault(); String namaSumber = allPkt.Where(x => x.kodePktCabang == kodeSumber).Select(x => x.namaPkt).FirstOrDefault(), namaTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.namaPkt).FirstOrDefault(); if (String.IsNullOrWhiteSpace(namaTujuan)) { namaTujuan = vault; } Console.WriteLine("Kode Tujuan: " + kodeTujuan); Console.WriteLine("Nama Tujuan: " + namaTujuan); Console.WriteLine("Nama Bank: " + namaBank); Console.WriteLine("Vendor Sumber: " + kodeSumber + " " + vendorSumber); Console.WriteLine("Vendor Tujuan: " + kodeTujuan + " " + vendorTujuan); Console.WriteLine("Value 100: " + temp2.d100); Console.WriteLine("Value 50: " + temp2.d50); Console.WriteLine("Value 20: " + temp2.d20); if (vault.Trim().ToLower() == "ambil") { //KHUSUS UNTUK YANG AMBIL HANYA DARI ADVJ SAJA. String namaPkt = allPkt.Where(x => x.kodePktCabang == "ADVJ").Select(x => x.namaPkt).First(); DataProses tempResult = new DataProses(); tempResult.vendorSumber = vendorSumber; tempResult.sumberDana = namaSumber; tempResult.tujuan = namaBank.Trim(); tempResult.namaTujuan = namaTujuan.Trim(); tempResult.denom100 = (Int64)temp2.d100; tempResult.denom50 = (Int64)temp2.d50; tempResult.denom20 = (Int64)temp2.d20; tempResult.denom10 = (Int64)temp2.d10; tempResult.denom5 = (Int64)temp2.d5; tempResult.denom2 = (Int64)temp2.d2; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; tempResult.keterangan = namaBank + " Ambil Ke " + namaPkt; result.Add(tempResult); } else if (String.IsNullOrEmpty(kodeTujuan) && vendorSumber != allPkt.Where(x => x.kodePkt == "ADJK").Select(x => x.vendor).First() && vault.Trim().ToLower().Contains("kirim")) { Console.WriteLine("Nama Bank2: " + namaBank); prosesRow(temp2, keteranganKirim.Replace("%BANK%", namaBank)); } else if (vendorSumber == allPkt.Where(x => x.kodePkt == "ADJK").Select(x => x.vendor).First()) { if (allPkt.Select(x => x.kodePktCabang).ToList().Contains(vault.Trim())) { String namaPktTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.namaPkt).FirstOrDefault(); prosesRow(temp2, keteranganKirimVault.Replace("%BANK%", namaBank).Replace("%NAMAPKT%", vault.Trim())); } else { DataProses tempResult = new DataProses(); tempResult.vendorSumber = vendorSumber; tempResult.sumberDana = namaSumber; tempResult.tujuan = namaBank.Trim(); tempResult.namaTujuan = namaTujuan.Trim(); tempResult.denom100 = (Int64)temp2.d100; tempResult.denom50 = (Int64)temp2.d50; tempResult.denom20 = (Int64)temp2.d20; tempResult.denom10 = (Int64)temp2.d10; tempResult.denom5 = (Int64)temp2.d5; tempResult.denom2 = (Int64)temp2.d2; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; tempResult.keterangan = keteranganKirim.Replace("%BANK%", namaBank); result.Add(tempResult); } } else if (!allPkt.Select(x => x.kodePktCabang).ToList().Contains(vault.Trim())) { Console.WriteLine("Nama Bank2: " + namaBank); String namaPktTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.namaPkt).FirstOrDefault(); prosesRow(temp2, keteranganKirimVault.Replace("%BANK%", namaBank).Replace("%NAMAPKT%", vault.Trim())); } else if (vendorSumber == vendorTujuan) { Console.WriteLine("Nama Tujuan Vendor Sama: " + namaTujuan); DataProses tempResult = new DataProses(); tempResult.vendorSumber = vendorSumber; tempResult.sumberDana = namaSumber; tempResult.tujuan = namaBank.Trim(); tempResult.namaTujuan = namaTujuan; tempResult.keterangan = keteranganGeserVault; tempResult.denom100 = (Int64)temp2.d100; tempResult.denom50 = (Int64)temp2.d50; tempResult.denom20 = (Int64)temp2.d20; tempResult.denom10 = (Int64)temp2.d10; tempResult.denom5 = (Int64)temp2.d5; tempResult.denom2 = (Int64)temp2.d2; tempResult.total = tempResult.denom100 + tempResult.denom50 + tempResult.denom20 + tempResult.denom10 + tempResult.denom5 + tempResult.denom2; result.Add(tempResult); } else if (vendorSumber != vendorTujuan) { Console.WriteLine("Nama Bank2: " + namaBank); String namaPktTujuan = allPkt.Where(x => x.kodePktCabang == kodeTujuan).Select(x => x.namaPkt).FirstOrDefault(); prosesRow(temp2, keteranganKirimVault.Replace("%BANK%", namaBank).Replace("%NAMAPKT%", namaPktTujuan)); } } } int counter = 1; var resultGrouped = (from x in result group x by new { Gabung = (x.keterangan.ToLower() == "geser vault" ? 0 : counter++), x.tujuan, x.vendorSumber } into g select new { sumberDana = (g.ToList().Count > 1 || g.Key.Gabung == 0 ? g.Select(y => y.namaTujuan).First() : g.Select(y => y.sumberDana).First()), tujuan = g.Select(y => y.tujuan).First().Trim(), denom100 = g.Sum(y => y.denom100), denom50 = g.Sum(y => y.denom50), denom20 = g.Sum(y => y.denom20), denom10 = g.Sum(y => y.denom10), denom5 = g.Sum(y => y.denom5), denom2 = g.Sum(y => y.denom2), total = g.Sum(y => y.total), keterangan = g.Select(y => y.keterangan).First(), }).ToList(); dataGridView1.DataSource = result; String csv = ServiceStack.Text.CsvSerializer.SerializeToCsv(resultGrouped); File.WriteAllText(sv.FileName, csv); loadForm.CloseForm(); MessageBox.Show("DONE!"); } } }