Exemplo n.º 1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                Tempat_Class         ClassTempat         = new Tempat_Class(db);
                JenisTransaksi_Class ClassJenisTransaksi = new JenisTransaksi_Class();

                DropDownListTempat.Items.AddRange(ClassTempat.DataDropDownList());
                DropDownListJenisTransaksi.Items.AddRange(ClassJenisTransaksi.DataDropDownList(db));
            }

            ViewState["TanggalAwal"]  = Pengaturan.HariIni()[0];
            ViewState["TanggalAkhir"] = Pengaturan.HariIni()[1];

            TextBoxTanggalAwal.Text  = ((DateTime)ViewState["TanggalAwal"]).ToString("d MMMM yyyy");
            TextBoxTanggalAkhir.Text = ((DateTime)ViewState["TanggalAkhir"]).ToString("d MMMM yyyy");

            LoadData(false);
        }
        else
        {
            LinkDownload.Visible = false;
        }
    }
Exemplo n.º 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                PenggunaLogin Pengguna = (PenggunaLogin)Session["PenggunaLogin"];

                Tempat_Class         ClassTempat         = new Tempat_Class(db);
                JenisTransaksi_Class ClassJenisTransaksi = new JenisTransaksi_Class();

                DropDownListTempat.Items.AddRange(ClassTempat.DataDropDownList());
                DropDownListTempat.SelectedValue = Pengguna.IDTempat.ToString();

                DropDownListJenisTransaksi.Items.AddRange(ClassJenisTransaksi.DataDropDownList(db));
                DropDownListJenisTransaksi.SelectedValue = "1";

                ViewState["TanggalAwal"]  = Pengaturan.HariIni()[0];
                ViewState["TanggalAkhir"] = Pengaturan.HariIni()[1];

                PanelTabel.Visible = true;
                PanelChart.Visible = false;

                LoadData();
            }
        }
        else
        {
            LinkDownload.Visible = false;
        }
    }
Exemplo n.º 3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                Pengguna_Class        ClassPengguna         = new Pengguna_Class(db);
                Tempat_Class          ClassTempat           = new Tempat_Class(db);
                JenisTransaksi_Class  ClassJenisTransaksi   = new JenisTransaksi_Class();
                StatusTransaksi_Class StatusTransaksi_Class = new StatusTransaksi_Class();
                Pelanggan_Class       ClassPelanggan        = new Pelanggan_Class(db);
                Meja_Class            Meja_Class            = new Meja_Class();

                DropDownListCariPenggunaTransaksi.Items.AddRange(ClassPengguna.DropDownList(true));
                DropDownListCariPenggunaUpdate.Items.AddRange(ClassPengguna.DropDownList(true));
                DropDownListCariTempat.Items.AddRange(ClassTempat.DataDropDownList());
                DropDownListCariJenisTransaksi.Items.AddRange(ClassJenisTransaksi.DataDropDownList(db));
                DropDownListCariStatusTransaksi.Items.AddRange(StatusTransaksi_Class.DataDropDownList(db));
                ClassPelanggan.DropDownList(DropDownListCariPelanggan, true);
                DropDownListCariMeja.Items.AddRange(Meja_Class.DataDropDownList(db));

                ViewState["TanggalAwal"]  = Pengaturan.HariIni()[0];
                ViewState["TanggalAkhir"] = Pengaturan.HariIni()[1];

                LoadData();
            }
        }
        else
        {
            LinkDownload.Visible = false;
        }
    }
Exemplo n.º 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                Tempat_Class          ClassTempat           = new Tempat_Class(db);
                JenisTransaksi_Class  ClassJenisTransaksi   = new JenisTransaksi_Class();
                StatusTransaksi_Class StatusTransaksi_Class = new StatusTransaksi_Class();
                JenisPembayaran_Class ClassJenisPembayaran  = new JenisPembayaran_Class(db);

                ClassTempat.DataListBox(ListBoxTempat);
                ClassJenisTransaksi.DataListBox(db, ListBoxJenisTransaksi);
                StatusTransaksi_Class.DataListBox(db, ListBoxStatusTransaksi);

                ListBoxStatusTransaksi.SelectedValue = "2";
                //ListBoxJenisTransaksi.Items.Add(new ListItem("- Semua Jenis Transaksi -", "0"));

                ViewState["TanggalAwal"]  = Pengaturan.HariIni()[0];
                ViewState["TanggalAkhir"] = Pengaturan.HariIni()[1];

                TextBoxTanggalAwal.Text  = ((DateTime)ViewState["TanggalAwal"]).ToString("d MMMM yyyy HH:mm");
                TextBoxTanggalAkhir.Text = ((DateTime)ViewState["TanggalAkhir"]).ToString("d MMMM yyyy HH:mm");
            }
        }
    }
Exemplo n.º 5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                PenggunaLogin Pengguna = (PenggunaLogin)Session["PenggunaLogin"];

                Tempat_Class         ClassTempat         = new Tempat_Class(db);
                JenisTransaksi_Class ClassJenisTransaksi = new JenisTransaksi_Class();
                Tanggal_Class        Tanggal_Class       = new Tanggal_Class();

                DropDownListTempat.Items.AddRange(ClassTempat.DataDropDownList());
                DropDownListTempat.SelectedValue = Pengguna.IDTempat.ToString();

                DropDownListJenisTransaksi.Items.AddRange(ClassJenisTransaksi.DataDropDownList(db));
                DropDownListJenisTransaksi.SelectedValue = ((int)EnumJenisTransaksi.PointOfSales).ToString();

                DropDownListTahun.Items.AddRange(Tanggal_Class.DropdownlistTahun());
                DropDownListTahun.SelectedValue = DateTime.Now.Year.ToString();

                LoadData();
            }
        }
        else
        {
            LinkDownload.Visible = false;
        }
    }
Exemplo n.º 6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                PenggunaLogin Pengguna = (PenggunaLogin)Session["PenggunaLogin"];

                Tempat_Class          ClassTempat           = new Tempat_Class(db);
                JenisTransaksi_Class  ClassJenisTransaksi   = new JenisTransaksi_Class();
                StatusTransaksi_Class StatusTransaksi_Class = new StatusTransaksi_Class();

                Konfigurasi_Class Konfigurasi_Class = new Konfigurasi_Class(Pengguna.IDGrupPengguna);
                Title1COGS.Visible  = Konfigurasi_Class.ValidasiKonfigurasi(EnumKonfigurasi.MelihatCOGSNetRevenue);
                Title2COGS.Visible  = Title1COGS.Visible;
                Title3COGS.Visible  = Title1COGS.Visible;
                Title4COGS.Visible  = Title1COGS.Visible;
                Footer1COGS.Visible = Title1COGS.Visible;
                Footer2COGS.Visible = Title1COGS.Visible;

                Title1GrossProfit.Visible  = Title1COGS.Visible;
                Title2GrossProfit.Visible  = Title1COGS.Visible;
                Title3GrossProfit.Visible  = Title1COGS.Visible;
                Title4GrossProfit.Visible  = Title1COGS.Visible;
                Footer1GrossProfit.Visible = Title1COGS.Visible;
                Footer2GrossProfit.Visible = Title1COGS.Visible;

                ClassTempat.DataListBox(ListBoxTempat);
                ClassJenisTransaksi.DataListBox(db, ListBoxJenisTransaksi);
                StatusTransaksi_Class.DataListBox(db, ListBoxStatusTransaksi);

                ListBoxStatusTransaksi.SelectedValue = ((int)EnumStatusTransaksi.Complete).ToString();;

                if (!string.IsNullOrEmpty(Request.QueryString["TanggalAwal"]) && !string.IsNullOrEmpty(Request.QueryString["TanggalAkhir"]))
                {
                    ViewState["TanggalAwal"]  = Request.QueryString["TanggalAwal"].ToDateTime();
                    ViewState["TanggalAkhir"] = Request.QueryString["TanggalAkhir"].ToDateTime();
                }
                else
                {
                    ViewState["TanggalAwal"]  = Pengaturan.HariIni()[0];
                    ViewState["TanggalAkhir"] = Pengaturan.HariIni()[1].AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
                }

                TextBoxTanggalAwal.Text  = ((DateTime)ViewState["TanggalAwal"]).ToString("d MMMM yyyy HH:mm");
                TextBoxTanggalAkhir.Text = ((DateTime)ViewState["TanggalAkhir"]).ToString("d MMMM yyyy HH:mm");

                LoadData();
            }
        }
        else
        {
            LinkDownload.Visible = false;
        }
    }
    public Dictionary <string, dynamic> CustomerTransaksiBrandKategoriProduk(List <int> ListIDGrupPelanggan)
    {
        Dictionary <string, dynamic> Result = new Dictionary <string, dynamic>();

        TBTransaksiDetail[] ListTransaksiDetail = db.TBTransaksiDetails
                                                  .Where(item =>
                                                         item.TBTransaksi.TanggalOperasional.Value.Date >= tanggalAwal &&
                                                         item.TBTransaksi.TanggalOperasional.Value.Date <= tanggalAkhir &&
                                                         item.TBTransaksi.IDStatusTransaksi != (int)EnumStatusTransaksi.Canceled)
                                                  .ToArray();

        #region FILTER GRUP PELANGGAN
        if (ListIDGrupPelanggan.Count > 0)
        {
            JenisTransaksi_Class JenisTransaksi_Class = new JenisTransaksi_Class();
            string tempListGrupPelanggan = "Grup Pelanggan : ";

            foreach (var item in ListIDGrupPelanggan)
            {
                tempListGrupPelanggan += db.TBGrupPelanggans.FirstOrDefault(item2 => item2.IDGrupPelanggan == item).Nama + ", ";
            }

            Result.Add("ListGrupPelanggan", tempListGrupPelanggan.Substring(0, tempListGrupPelanggan.Length - 2));

            ListTransaksiDetail = ListTransaksiDetail.Where(item => ListIDGrupPelanggan.Contains(item.TBTransaksi.TBPelanggan.IDGrupPelanggan)).ToArray();
        }
        else
        {
            Result.Add("ListGrupPelanggan", "Semua Grup Pelanggan");
        }
        #endregion

        var Data = ListTransaksiDetail
                   .GroupBy(item => new
        {
            item.TBKombinasiProduk.TBProduk.TBPemilikProduk,
            item.TBKombinasiProduk
        })
                   .Select(item => new
        {
            KodeKombinasiProduk = item.Key.TBKombinasiProduk.KodeKombinasiProduk,
            PemilikProduk       = item.Key.TBPemilikProduk.Nama,
            Produk            = item.Key.TBKombinasiProduk.TBProduk.Nama,
            AtributProduk     = item.Key.TBKombinasiProduk.TBAtributProduk.Nama,
            IDPemilikProduk   = item.Key.TBKombinasiProduk.TBProduk.IDPemilikProduk,
            IDProduk          = item.Key.TBKombinasiProduk.TBProduk.IDProduk,
            IDAtributProduk   = item.Key.TBKombinasiProduk.IDAtributProduk,
            RelasiKategori    = item.Key.TBKombinasiProduk.TBProduk.TBRelasiProdukKategoriProduks,
            Kategori          = item.Key.TBKombinasiProduk.TBProduk.TBRelasiProdukKategoriProduks.FirstOrDefault().TBKategoriProduk.Nama,
            JumlahProduk      = item.Sum(item2 => item2.Quantity),
            HargaPokok        = item.Sum(item2 => item2.HargaBeli * item2.Quantity),
            HargaJual         = item.Sum(item2 => item2.HargaJual * item2.Quantity),
            PotonganHargaJual = item.Sum(item2 => item2.Discount * item2.Quantity),
            Subtotal          = item.Sum(item2 => item2.Subtotal),
            PenjualanBersih   = item.Sum(item2 => (item2.HargaJual - item2.Discount - item2.HargaBeli) * item2.Quantity),
        }).OrderBy(item => item.IDPemilikProduk).ThenBy(item => item.Produk).ThenBy(item => item.IDAtributProduk);

        var DataResult = db.TBPemilikProduks.AsEnumerable().Where(item => Data.Any(data => data.IDPemilikProduk == item.IDPemilikProduk)).Select(item => new
        {
            PemilikProduk = item.Nama,
            Body          = db.TBKategoriProduks.AsEnumerable().Where(item2 => Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk).Any(item3 => item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null)).Select(item2 => new
            {
                KategoriProduk         = item2.Nama,
                Body                   = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null),
                TotalJumlahProduk      = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.JumlahProduk),
                TotalHargaPokok        = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.HargaPokok),
                TotalHargaJual         = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.HargaJual),
                TotalPotonganHargaJual = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.PotonganHargaJual),
                TotalSubtotal          = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.Subtotal),
                TotalPenjualanBersih   = Data.Where(item3 => item3.IDPemilikProduk == item.IDPemilikProduk && item3.RelasiKategori.FirstOrDefault(relasi => relasi.IDKategoriProduk == item2.IDKategoriProduk) != null).Sum(item3 => item3.PenjualanBersih),
            }).ToArray(),
            TotalJumlahProduk      = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.JumlahProduk),
            TotalHargaPokok        = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.HargaPokok),
            TotalHargaJual         = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.HargaJual),
            TotalPotonganHargaJual = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.PotonganHargaJual),
            TotalSubtotal          = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.Subtotal),
            TotalPenjualanBersih   = Data.Where(data => data.IDPemilikProduk == item.IDPemilikProduk).Sum(data => data.PenjualanBersih),
        }).ToArray();

        if (excel)
        {
            #region EXCEL
            Excel_Class    Excel_Class = new Excel_Class(pengguna, "Transaksi", Periode, 27);
            ExcelWorksheet Worksheet   = Excel_Class.Worksheet;

            Excel_Class.Header(1, "No.");
            Excel_Class.Header(2, "Transaksi");

            int index = 2;

            foreach (var item in ListTransaksiDetail)
            {
                Excel_Class.Content(index, 1, index - 1);
                Excel_Class.Content(index, 2, item.IDTransaksi);

                index++;
            }

            Excel_Class.Save();

            linkDownload = Excel_Class.LinkDownload;
            #endregion
        }

        Result.Add("Data", DataResult);

        return(Result);
    }
    public Dictionary <string, dynamic> CustomerDetailTransaksiProduk(List <int> ListIDGrupPelanggan, int id, string status)
    {
        Dictionary <string, dynamic> Result = new Dictionary <string, dynamic>();

        TBTransaksi[] ListTransaksi = db.TBTransaksis.Where(item => item.TanggalTransaksi.Value.Date >= tanggalAwal && item.TanggalTransaksi.Value.Date <= tanggalAkhir &&
                                                            item.IDPelanggan > 1 && item.TBPelanggan.TBAlamats.Count > 0 && item.IDStatusTransaksi != (int)EnumStatusTransaksi.Canceled).ToArray();

        TBTransaksiDetail[] ListTransaksiDetail = db.TBTransaksiDetails.Where(item => item.TBTransaksi.TanggalTransaksi.Value.Date >= tanggalAwal && item.TBTransaksi.TanggalTransaksi.Value.Date <= tanggalAkhir &&
                                                                              item.TBTransaksi.IDPelanggan > 1 && item.TBTransaksi.TBPelanggan.TBAlamats.Count > 0 && item.TBTransaksi.IDStatusTransaksi != (int)EnumStatusTransaksi.Canceled).ToArray();

        #region FILTER GRUP PELANGGAN
        if (ListIDGrupPelanggan.Count > 0)
        {
            JenisTransaksi_Class JenisTransaksi_Class = new JenisTransaksi_Class();
            string tempListGrupPelanggan = "Grup Pelanggan : ";

            foreach (var item in ListIDGrupPelanggan)
            {
                tempListGrupPelanggan += db.TBGrupPelanggans.FirstOrDefault(item2 => item2.IDGrupPelanggan == item).Nama + ", ";
            }

            ListTransaksi       = ListTransaksi.Where(item => ListIDGrupPelanggan.Contains(item.TBPelanggan.IDGrupPelanggan)).ToArray();
            ListTransaksiDetail = ListTransaksiDetail.Where(item => ListIDGrupPelanggan.Contains(item.TBTransaksi.TBPelanggan.IDGrupPelanggan)).ToArray();
        }
        #endregion

        if (status == "Pelanggan")
        {
            var Transaksi = ListTransaksi.Where(item => item.IDPelanggan == id)
                            .GroupBy(item => new
            {
                item.TanggalTransaksi.Value.Month,
                item.TanggalTransaksi.Value.Year,
            })
                            .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                JumlahTransaksi = item.Count(),
                NetRevenue      = item.Sum(item2 => (item2.Subtotal + item2.TotalPotonganHargaJualDetail) - (item2.TotalPotonganHargaJualDetail + item2.TotalDiscountVoucher + item2.PotonganTransaksi) + item2.Pembulatan),
            }).ToArray();
            Result.Add("HasilTransaksi", Transaksi);

            var Produk = ListTransaksiDetail.Where(item => item.TBTransaksi.IDPelanggan == id)
                         .GroupBy(item => new
            {
                item.TBTransaksi.TanggalTransaksi.Value.Month,
                item.TBTransaksi.TanggalTransaksi.Value.Year,
                item.TBKombinasiProduk
            })
                         .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                KombinasiProduk = item.Key.TBKombinasiProduk.Nama,
                KategoriProduk  = GabungkanSemuaKategoriProduk(null, item.Key.TBKombinasiProduk),
                JumlahProduk    = item.Sum(item2 => item2.Quantity)
            }).ToArray();
            Result.Add("HasilProduk", Produk);
        }
        else if (status == "Kota")
        {
            var Transaksi = ListTransaksi.Where(item => item.TBPelanggan.TBAlamats.FirstOrDefault().IDNegara != null && item.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.IDWilayah == id)
                            .GroupBy(item => new
            {
                item.TanggalTransaksi.Value.Month,
                item.TanggalTransaksi.Value.Year,
            })
                            .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                JumlahTransaksi = item.Count(),
                NetRevenue      = item.Sum(item2 => (item2.Subtotal + item2.TotalPotonganHargaJualDetail) - (item2.TotalPotonganHargaJualDetail + item2.TotalDiscountVoucher + item2.PotonganTransaksi) + item2.Pembulatan),
            }).ToArray();
            Result.Add("HasilTransaksi", Transaksi);

            var Produk = ListTransaksiDetail.Where(item => item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().IDNegara != null && item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.IDWilayah == id)
                         .GroupBy(item => new
            {
                item.TBTransaksi.TanggalTransaksi.Value.Month,
                item.TBTransaksi.TanggalTransaksi.Value.Year,
                item.TBKombinasiProduk
            })
                         .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                KombinasiProduk = item.Key.TBKombinasiProduk.Nama,
                KategoriProduk  = GabungkanSemuaKategoriProduk(null, item.Key.TBKombinasiProduk),
                JumlahProduk    = item.Sum(item2 => item2.Quantity)
            }).ToArray();
            Result.Add("HasilProduk", Produk);
        }
        else if (status == "Provinsi")
        {
            var Transaksi = ListTransaksi.Where(item => item.TBPelanggan.TBAlamats.FirstOrDefault().IDNegara != null && item.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.TBWilayah1.IDWilayah == id)
                            .GroupBy(item => new
            {
                item.TanggalTransaksi.Value.Month,
                item.TanggalTransaksi.Value.Year,
            })
                            .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                JumlahTransaksi = item.Count(),
                NetRevenue      = item.Sum(item2 => (item2.Subtotal + item2.TotalPotonganHargaJualDetail) - (item2.TotalPotonganHargaJualDetail + item2.TotalDiscountVoucher + item2.PotonganTransaksi) + item2.Pembulatan),
            }).ToArray();
            Result.Add("HasilTransaksi", Transaksi);

            var Produk = ListTransaksiDetail.Where(item => item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().IDNegara != null && item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.TBWilayah1.IDWilayah == id)
                         .GroupBy(item => new
            {
                item.TBTransaksi.TanggalTransaksi.Value.Month,
                item.TBTransaksi.TanggalTransaksi.Value.Year,
                item.TBKombinasiProduk
            })
                         .Select(item => new
            {
                Bulan           = DateTime.Parse(item.Key.Month + "/" + "01" + "/" + item.Key.Year).ToString("MMMM", new CultureInfo("id-ID")),
                Tahun           = item.Key.Year,
                KombinasiProduk = item.Key.TBKombinasiProduk.Nama,
                KategoriProduk  = GabungkanSemuaKategoriProduk(null, item.Key.TBKombinasiProduk),
                JumlahProduk    = item.Sum(item2 => item2.Quantity)
            }).ToArray();
            Result.Add("HasilProduk", Produk);
        }

        return(Result);
    }
    public Dictionary <string, dynamic> CustomerLocation(List <int> ListIDGrupPelanggan)
    {
        Dictionary <string, dynamic> Result = new Dictionary <string, dynamic>();

        TBTransaksi[] ListTransaksi = db.TBTransaksis.Where(item => item.TanggalTransaksi.Value.Date >= tanggalAwal && item.TanggalTransaksi.Value.Date <= tanggalAkhir &&
                                                            item.IDPelanggan > 1 && item.TBPelanggan.TBAlamats.Count > 0 && item.IDStatusTransaksi != (int)EnumStatusTransaksi.Canceled).ToArray();

        #region FILTER GRUP PELANGGAN
        if (ListIDGrupPelanggan.Count > 0)
        {
            JenisTransaksi_Class JenisTransaksi_Class = new JenisTransaksi_Class();
            string tempListGrupPelanggan = "Grup Pelanggan : ";

            foreach (var item in ListIDGrupPelanggan)
            {
                tempListGrupPelanggan += db.TBGrupPelanggans.FirstOrDefault(item2 => item2.IDGrupPelanggan == item).Nama + ", ";
            }

            Result.Add("ListGrupPelanggan", tempListGrupPelanggan.Substring(0, tempListGrupPelanggan.Length - 2));

            ListTransaksi = ListTransaksi.Where(item => ListIDGrupPelanggan.Contains(item.TBPelanggan.IDGrupPelanggan)).ToArray();
        }
        else
        {
            Result.Add("ListGrupPelanggan", "Semua Grup Pelanggan");
        }
        #endregion

        var Pelanggan = ListTransaksi
                        .GroupBy(item => item.TBPelanggan)
                        .Select(item => new
        {
            item.Key.TBAlamats,
            item.Key.IDGrupPelanggan,
            item.Key.IDPelanggan,
            item.Key.TBGrupPelanggan,
            Pelanggan       = item.Key.NamaLengkap,
            TanggalDaftar   = item.Key.TanggalDaftar,
            JumlahTransaksi = item.Count(),
            JumlahProduk    = item.Sum(item2 => item2.JumlahProduk),
            TotalDiskon     = item.Sum(item2 => (item2.TotalPotonganHargaJualDetail + item2.TotalDiscountVoucher + item2.PotonganTransaksi)),
            NetRevenue      = item.Sum(item2 => (item2.Subtotal + item2.TotalPotonganHargaJualDetail) - (item2.TotalPotonganHargaJualDetail + item2.TotalDiscountVoucher + item2.PotonganTransaksi) + item2.Pembulatan),
            Grandtotal      = item.Sum(item2 => item2.GrandTotal),
            StatusLama      = item.Key.TBTransaksis.Where(item2 => item2.IDStatusTransaksi != (int)EnumStatusTransaksi.Canceled).Count() > 1 ? true : false
        }).OrderByDescending(item => item.NetRevenue);

        tempPencarian += "?TanggalAwal=" + tanggalAwal;
        tempPencarian += "&TanggalAkhir=" + tanggalAkhir;

        var listBaru = Pelanggan.Where(item => item.TanggalDaftar.Value.Date >= tanggalAwal && item.TanggalDaftar.Value.Date <= tanggalAkhir);
        Result.Add("BaruJumlahTransaksi", Pengaturan.FormatHarga(listBaru.Count() > 0 ? listBaru.Sum(item => item.JumlahTransaksi) : 0));
        Result.Add("BaruJumlahProduk", Pengaturan.FormatHarga(listBaru.Count() > 0 ? listBaru.Sum(item => item.JumlahProduk) : 0));
        Result.Add("BaruGrandtotal", Pengaturan.FormatHarga(listBaru.Count() > 0 ? listBaru.Sum(item => item.Grandtotal) : 0));

        var listLama = Pelanggan.Where(item => item.StatusLama == true);
        Result.Add("LamaJumlahTransaksi", Pengaturan.FormatHarga(listLama.Count() > 0 ? listLama.Sum(item => item.JumlahTransaksi) : 0));
        Result.Add("LamaJumlahProduk", Pengaturan.FormatHarga(listLama.Count() > 0 ? listLama.Sum(item => item.JumlahProduk) : 0));
        Result.Add("LamaGrandtotal", Pengaturan.FormatHarga(listLama.Count() > 0 ? listLama.Sum(item => item.Grandtotal) : 0));

        var GrupPelanggan = ListTransaksi
                            .GroupBy(item => item.TBPelanggan.TBGrupPelanggan)
                            .Select(item => new
        {
            GrupPelanggan   = item.Key.Nama,
            JumlahTransaksi = item.Count(),
            JumlahProduk    = item.Sum(item2 => item2.JumlahProduk),
            Grandtotal      = item.Sum(item2 => item2.GrandTotal)
        }).OrderByDescending(item => item.Grandtotal);
        Result.Add("DataGrupPelanggan", GrupPelanggan);
        Result.Add("TotalGrupPelangganJumlahTransaksi", Pengaturan.FormatHarga(GrupPelanggan.Sum(item => item.JumlahTransaksi)));
        Result.Add("TotalGrupPelangganJumlahProduk", Pengaturan.FormatHarga(GrupPelanggan.Sum(item => item.JumlahProduk)));
        Result.Add("TotalGrupPelangganGrandtotal", Pengaturan.FormatHarga(GrupPelanggan.Sum(item => item.Grandtotal)));

        Result.Add("DataPelanggan", Pelanggan);
        Result.Add("TotalPelangganJumlahTransaksi", Pengaturan.FormatHarga(Pelanggan.Sum(item => item.JumlahTransaksi)));
        Result.Add("TotalPelangganJumlahProduk", Pengaturan.FormatHarga(Pelanggan.Sum(item => item.TotalDiskon)));
        Result.Add("TotalPelangganGrandtotal", Pengaturan.FormatHarga(Pelanggan.Sum(item => item.NetRevenue)));

        var Kota = Pelanggan.Where(item => item.TBAlamats.FirstOrDefault().IDNegara != null)
                   .GroupBy(item => item.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1)
                   .Select(item => new
        {
            item.Key,
            item.Key.IDWilayah,
            Kota            = item.Key.Nama,
            JumlahTransaksi = item.Sum(item2 => item2.JumlahTransaksi),
            TotalDiskon     = item.Sum(item2 => item2.TotalDiskon),
            NetRevenue      = item.Sum(item2 => item2.NetRevenue)
        }).OrderByDescending(item => item.NetRevenue);
        Result.Add("DataKota", Kota);
        Result.Add("TotalKotaJumlahTransaksi", Pengaturan.FormatHarga(Kota.Sum(item => item.JumlahTransaksi)));
        Result.Add("TotalKotaJumlahProduk", Pengaturan.FormatHarga(Kota.Sum(item => item.TotalDiskon)));
        Result.Add("TotalKotaGrandtotal", Pengaturan.FormatHarga(Kota.Sum(item => item.NetRevenue)));

        var Provinsi = Kota
                       .GroupBy(item => item.Key.TBWilayah1)
                       .Select(item => new
        {
            item.Key.IDWilayah,
            Provinsi        = item.Key.Nama,
            JumlahTransaksi = item.Sum(item2 => item2.JumlahTransaksi),
            TotalDiskon     = item.Sum(item2 => item2.TotalDiskon),
            NetRevenue      = item.Sum(item2 => item2.NetRevenue)
        }).OrderByDescending(item => item.NetRevenue);
        Result.Add("DataProvinsi", Provinsi);
        Result.Add("TotalProvinsiJumlahTransaksi", Pengaturan.FormatHarga(Provinsi.Sum(item => item.JumlahTransaksi)));
        Result.Add("TotalProvinsiJumlahProduk", Pengaturan.FormatHarga(Provinsi.Sum(item => item.TotalDiskon)));
        Result.Add("TotalProvinsiGrandtotal", Pengaturan.FormatHarga(Provinsi.Sum(item => item.NetRevenue)));
        if (excel)
        {
            #region EXCEL
            //Excel_Class Excel_Class = new Excel_Class(pengguna, "Transaksi", Periode, 27);
            //ExcelWorksheet Worksheet = Excel_Class.Worksheet;

            //Excel_Class.Header(1, "No.");
            //Excel_Class.Header(2, "Transaksi");

            //int index = 2;

            //foreach (var item in Data)
            //{
            //    Excel_Class.Content(index, 1, index - 1);
            //    Excel_Class.Content(index, 2, item.IDTransaksi);

            //    index++;
            //}

            //Excel_Class.Save();

            //linkDownload = Excel_Class.LinkDownload;
            #endregion
        }

        return(Result);
    }