Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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!");
                }
            }
        }