private void PreviewReportDetail()
        {
            var periode = string.Empty;

            IReportBeliProdukBll reportBll = new ReportBeliProdukBll(_log);

            IList <ReportPembelianProdukDetail> listOfReportPembelian = new List <ReportPembelianProdukDetail>();

            IList <string> listOfSupplierId = new List <string>();

            if (chkBoxTitle.Checked)
            {
                listOfSupplierId = base.GetSupplierId(_listOfSupplier);

                if (listOfSupplierId.Count == 0)
                {
                    MsgHelper.MsgWarning("Minimal 1 supplier harus dipilih");
                    return;
                }
            }

            if (rdoTanggal.Checked)
            {
                if (!DateTimeHelper.IsValidRangeTanggal(dtpTanggalMulai.Value, dtpTanggalSelesai.Value))
                {
                    MsgHelper.MsgNotValidRangeTanggal();
                    return;
                }

                var tanggalMulai   = DateTimeHelper.DateToString(dtpTanggalMulai.Value);
                var tanggalSelesai = DateTimeHelper.DateToString(dtpTanggalSelesai.Value);

                periode = dtpTanggalMulai.Value == dtpTanggalSelesai.Value ? string.Format("Periode : {0}", tanggalMulai) : string.Format("Periode : {0} s.d {1}", tanggalMulai, tanggalSelesai);

                listOfReportPembelian = reportBll.DetailGetByTanggal(dtpTanggalMulai.Value, dtpTanggalSelesai.Value);
            }
            else
            {
                periode = string.Format("Periode : {0} {1}", cmbBulan.Text, cmbTahun.Text);

                var bulan = cmbBulan.SelectedIndex + 1;
                var tahun = int.Parse(cmbTahun.Text);

                listOfReportPembelian = reportBll.DetailGetByBulan(bulan, tahun);
            }

            if (listOfSupplierId.Count > 0 && listOfReportPembelian.Count > 0)
            {
                listOfReportPembelian = listOfReportPembelian.Where(f => listOfSupplierId.Contains(f.supplier_id))
                                        .ToList();
            }

            if (listOfReportPembelian.Count > 0)
            {
                var reportDataSource = new ReportDataSource
                {
                    Name  = "ReportPembelianProdukDetail",
                    Value = listOfReportPembelian
                };

                var parameters = new List <ReportParameter>();
                parameters.Add(new ReportParameter("periode", periode));

                base.ShowReport(this.Text, "RvPembelianProdukDetail", reportDataSource, parameters);
            }
            else
            {
                MsgHelper.MsgInfo("Maaf laporan data pembelian tidak ditemukan");
            }
        }
        private void PreviewReportHeader()
        {
            var periode = string.Empty;

            IReportBeliProdukBll reportBll = new ReportBeliProdukBll(_log);

            IList <BeliProduk> listOfBeli = new List <BeliProduk>();
            var listOfSupplierId          = new List <string>();

            if (chkBoxTitle.Checked)
            {
                for (int i = 0; i < chkListBox.Items.Count; i++)
                {
                    if (chkListBox.GetItemChecked(i))
                    {
                        var supplier = _listOfSupplier[i];
                        listOfSupplierId.Add(supplier.supplier_id);
                    }
                }

                if (listOfSupplierId.Count == 0)
                {
                    MsgHelper.MsgWarning("Minimal 1 supplier harus dipilih");
                    return;
                }
            }

            if (rdoTanggal.Checked)
            {
                if (!DateTimeHelper.IsValidRangeTanggal(dtpTanggalMulai.Value, dtpTanggalSelesai.Value))
                {
                    MsgHelper.MsgNotValidRangeTanggal();
                    return;
                }

                if (dtpTanggalMulai.Value == dtpTanggalSelesai.Value)
                {
                    periode = string.Format("Periode : {0}", DateTimeHelper.DateToString(dtpTanggalMulai.Value));
                }
                else
                {
                    periode = string.Format("Periode : {0} s.d {1}", DateTimeHelper.DateToString(dtpTanggalMulai.Value), DateTimeHelper.DateToString(dtpTanggalSelesai.Value));
                }

                listOfBeli = reportBll.GetByTanggal(dtpTanggalMulai.Value, dtpTanggalSelesai.Value);
            }
            else
            {
                periode = string.Format("Periode : {0} {1}", cmbBulan.Text, cmbTahun.Text);

                var bulan = cmbBulan.SelectedIndex + 1;
                var tahun = int.Parse(cmbTahun.Text);

                listOfBeli = reportBll.GetByBulan(bulan, tahun);
            }

            if (listOfSupplierId.Count > 0 && listOfBeli.Count > 0)
            {
                listOfBeli = listOfBeli.Where(f => f.Supplier != null && listOfSupplierId.Contains(f.supplier_id))
                             .ToList();
            }

            if (listOfBeli.Count > 0)
            {
                var listOfSupplier = listOfBeli.Select(f => f.Supplier).ToList()
                                     .GroupBy(gb => gb.supplier_id).Select(g => g.First()).ToList();

                var listOfPengguna = listOfBeli.Select(f => f.Supplier).ToList()
                                     .GroupBy(gb => gb.supplier_id).Select(g => g.First()).ToList();

                var listOfBeliDto = Mapper.Map <IList <BeliProdukDto> >(listOfBeli);

                var rpt = new CrPembelianProdukHeader();
                rpt.Database.Tables["Supplier"].SetDataSource(listOfSupplier);
                rpt.Database.Tables["Pengguna"].SetDataSource(listOfPengguna);
                rpt.Database.Tables["BeliProduk"].SetDataSource(listOfBeliDto);

                rpt.SetParameterValue("periode", periode);

                var frmPreview = new FrmPreviewReport(this.Text, rpt);
                frmPreview.ShowDialog();
            }
            else
            {
                MsgHelper.MsgInfo("Maaf data pembelian tidak ditemukan");
            }
        }