예제 #1
0
    private IEnumerable <dynamic> LoadDatabase()
    {
        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
        {
            DateTime _tanggalAwal = DateTime.Now;

            Server.ScriptTimeout = 1000000;

            //QUERY DATA
            string _tempPencarian = string.Empty;

            //ButtonPrint.OnClientClick = "return popitup('ProdukPrint.aspx" + _tempPencarian + "')";

            //Stok Awal : 1
            //Restok : 2
            //Reject : 18
            //Bertambah
            //Berkurang
            //Stok Akhir

            var _database = db.TBKombinasiProduks.Select(item => item);

            #region PRODUK
            if (!string.IsNullOrWhiteSpace(TextBoxProduk.Text))
            {
                _database = _database.Where(item => item.TBProduk.Nama.Contains(TextBoxProduk.Text));
                TextBoxProduk.Focus();

                _tempPencarian += "&Produk=" + TextBoxProduk.Text;
            }
            #endregion

            #region KODE
            if (!string.IsNullOrWhiteSpace(TextBoxKode.Text))
            {
                _database = _database.Where(item => item.KodeKombinasiProduk.Contains(TextBoxKode.Text));
                TextBoxKode.Focus();

                _tempPencarian += "&Kode=" + TextBoxKode.Text;
            }
            #endregion

            #region WARNA
            if (DropDownListWarna.SelectedValue != "-1")
            {
                _database = _database.Where(item => item.TBProduk.IDWarna == DropDownListWarna.SelectedValue.ToInt());

                TextBoxProduk.Focus();
                _tempPencarian += "&IDWarna=" + DropDownListWarna.SelectedValue;
            }
            #endregion

            #region PEMILIK PRODUK
            if (DropDownListPemilik.SelectedValue != "-1")
            {
                _database = _database.Where(item => item.TBProduk.IDPemilikProduk == DropDownListPemilik.SelectedValue.ToInt());

                TextBoxProduk.Focus();
                _tempPencarian += "&IDPemilikProduk=" + DropDownListPemilik.SelectedValue;
            }
            #endregion

            #region ATRIBUT
            if (DropDownListVarian.SelectedValue != "-1")
            {
                _database = _database.Where(item => item.IDAtributProduk == DropDownListVarian.SelectedValue.ToInt());

                TextBoxProduk.Focus();
                _tempPencarian += "&IDAtribut=" + DropDownListVarian.SelectedValue;
            }
            #endregion

            #region KATEGORI
            if (DropDownListKategori.SelectedValue != "-1")
            {
                if (DropDownListKategori.SelectedValue == "0")
                {
                    _database = _database.Where(item => item.TBProduk.TBRelasiProdukKategoriProduks.Count == 0);
                }
                else
                {
                    _database = _database.Where(item =>
                                                item.TBProduk.TBRelasiProdukKategoriProduks.Count > 0 &&
                                                item.TBProduk.TBRelasiProdukKategoriProduks.FirstOrDefault().IDKategoriProduk == int.Parse(DropDownListKategori.SelectedValue));
                }

                TextBoxProduk.Focus();
                _tempPencarian += "&IDKategori=" + DropDownListKategori.SelectedValue;
            }
            #endregion

            #region QUERY DATA
            var _data = _database
                        .Select(item => new
            {
                IDProduk          = item.IDProduk,
                IDKombinasiProduk = item.IDKombinasiProduk,
                Produk            = item.TBProduk.Nama,
                Warna             = item.TBProduk.TBWarna.Nama ?? "",
                Brand             = item.TBProduk.TBPemilikProduk.Nama ?? "",
                Kategori          = item.TBProduk.TBRelasiProdukKategoriProduks.FirstOrDefault().TBKategoriProduk.Nama ?? "",
                Kode   = item.KodeKombinasiProduk,
                Varian = item.TBAtributProduk.Nama ?? "",

                IDVendor = item.TBStokProduks
                           .FirstOrDefault(item2 =>
                                           item2.IDTempat == int.Parse(DropDownListTempat.SelectedValue)).TBHargaVendors.FirstOrDefault().IDVendor ?? 0,

                Vendor = item.TBStokProduks
                         .FirstOrDefault(item2 =>
                                         item2.IDTempat == int.Parse(DropDownListTempat.SelectedValue)).TBHargaVendors.FirstOrDefault().TBVendor.Nama ?? "",

                StokHarga = StokHarga(item.TBStokProduks.FirstOrDefault(item2 => item2.IDTempat == int.Parse(DropDownListTempat.SelectedValue)))
            });
            #endregion

            #region HARGA BELI
            if (!string.IsNullOrWhiteSpace(TextBoxHargaBeli.Text))
            {
                if (TextBoxHargaBeli.Text.Contains("-"))
                {
                    string[] _angka = TextBoxHargaBeli.Text.Split('-');
                    _data = _data.Where(item =>
                                        item.StokHarga[0] >= _angka[0].ToDecimal() &&
                                        item.StokHarga[0] <= _angka[1].ToDecimal()).OrderBy(item => item.StokHarga[0]);
                }
                else
                {
                    _data = _data.Where(item => item.StokHarga[0] == TextBoxHargaBeli.Text.ToDecimal());
                }

                TextBoxHargaBeli.Focus();
                _tempPencarian += "&HargaBeli=" + TextBoxHargaBeli.Text;
            }
            #endregion

            #region HARGA JUAL
            if (!string.IsNullOrWhiteSpace(TextBoxHargaJual.Text))
            {
                if (TextBoxHargaJual.Text.Contains("-"))
                {
                    string[] _angka = TextBoxHargaJual.Text.Split('-');
                    _data = _data.Where(item =>
                                        item.StokHarga[1] >= _angka[0].ToDecimal() &&
                                        item.StokHarga[1] <= _angka[1].ToDecimal()).OrderBy(item => item.StokHarga[1]);
                }
                else
                {
                    _data = _data.Where(item => item.StokHarga[1] == TextBoxHargaJual.Text.ToDecimal());
                }

                TextBoxHargaJual.Focus();
                _tempPencarian += "&HargaJual=" + TextBoxHargaJual.Text;
            }
            #endregion

            #region STOK AWAL
            //if (!string.IsNullOrWhiteSpace(TextBoxStokAwal.Text))
            //{
            //    if (TextBoxStokAwal.Text.Contains("-"))
            //    {
            //        string[] _angka = TextBoxStokAwal.Text.Split('-');
            //        _data = _data.Where(item =>
            //            item.StokAwal >= _angka[0].ToDecimal() &&
            //            item.StokAwal <= _angka[1].ToDecimal()).OrderBy(item => item.StokAwal);
            //    }
            //    else
            //        _data = _data.Where(item => item.StokAwal == TextBoxStokAwal.Text.ToDecimal());

            //    TextBoxStokAwal.Focus();
            //    _tempPencarian += "&StokAwal=" + TextBoxStokAwal.Text;
            //}
            #endregion

            #region RESTOK
            //if (!string.IsNullOrWhiteSpace(TextBoxRestok.Text))
            //{
            //    if (TextBoxRestok.Text.Contains("-"))
            //    {
            //        string[] _angka = TextBoxRestok.Text.Split('-');
            //        _data = _data.Where(item =>
            //            item.Restok >= _angka[0].ToDecimal() &&
            //            item.Restok <= _angka[1].ToDecimal()).OrderBy(item => item.Restok);
            //    }
            //    else
            //        _data = _data.Where(item => item.Restok == TextBoxRestok.Text.ToDecimal());

            //    TextBoxRestok.Focus();
            //    _tempPencarian += "&Restok=" + TextBoxRestok.Text;
            //}
            #endregion

            #region VENDOR
            if (DropDownListVendor.SelectedValue != "-1")
            {
                if (DropDownListVendor.SelectedValue == "0")
                {
                    _data = _data.Where(item => item.IDVendor == 0);
                }
                else
                {
                    _data = _data.Where(item =>
                                        item.IDVendor > 0 &&
                                        item.IDVendor == int.Parse(DropDownListVendor.SelectedValue));
                }

                TextBoxProduk.Focus();
                _tempPencarian += "&IDVendor=" + DropDownListVendor.SelectedValue;
            }
            #endregion

            if (_data.Count() > 0)
            {
                var _kombinasiProduk = _data.Select(item => item.IDKombinasiProduk).Distinct();

                var _dataKombinasiProduk = db.TBPerpindahanStokProduks
                                           .Where(item =>
                                                  item.IDTempat == int.Parse(DropDownListTempat.SelectedValue) &&
                                                  _kombinasiProduk.Any(item2 => item2 == item.TBStokProduk.IDKombinasiProduk))
                                           .GroupBy(item => new
                {
                    item.TBStokProduk.IDKombinasiProduk,
                    item.IDJenisPerpindahanStok,
                    item.TBJenisPerpindahanStok.Status
                })
                                           .Select(item => new
                {
                    Key    = item.Key,
                    Jumlah = item.Sum(item2 => item2.Jumlah)
                });

                var _newData = _data.ToList()
                               .Select(item => new
                {
                    IDProduk           = item.IDProduk,
                    Produk             = item.Produk,
                    Warna              = item.Warna,
                    Brand              = item.Brand,
                    Kategori           = item.Kategori,
                    Kode               = item.Kode,
                    Varian             = item.Varian,
                    IDVendor           = item.IDVendor,
                    Vendor             = item.Vendor,
                    HargaBeli          = item.StokHarga[0],
                    HargaJual          = item.StokHarga[1],
                    StokAkhir          = item.StokHarga[2],
                    SubtotalHargaBeli  = item.StokHarga[3],
                    SubtotalHargaJual  = item.StokHarga[4],
                    SubtotalKeuntungan = item.StokHarga[5],

                    //PerpindahanStok = PerpindahanStok(item.IDKombinasiProduk, int.Parse(DropDownListTempat.SelectedValue))

                    StokAwal = _dataKombinasiProduk.Where(item2 =>
                                                          item2.Key.IDKombinasiProduk == item.IDKombinasiProduk &&
                                                          item2.Key.IDJenisPerpindahanStok == 1).Sum(item2 => item2.Jumlah),

                    Restok = _dataKombinasiProduk.Where(item2 =>
                                                        item2.Key.IDKombinasiProduk == item.IDKombinasiProduk &&
                                                        item2.Key.IDJenisPerpindahanStok == 2).Sum(item2 => item2.Jumlah),

                    Reject = _dataKombinasiProduk.Where(item2 =>
                                                        item2.Key.IDKombinasiProduk == item.IDKombinasiProduk &&
                                                        item2.Key.IDJenisPerpindahanStok == 18).Sum(item2 => item2.Jumlah),

                    Bertambah = _dataKombinasiProduk.Where(item2 =>
                                                           item2.Key.IDKombinasiProduk == item.IDKombinasiProduk &&
                                                           item2.Key.IDJenisPerpindahanStok != 1 &&
                                                           item2.Key.IDJenisPerpindahanStok != 2 &&
                                                           item2.Key.Status == true).Sum(item2 => item2.Jumlah),

                    Berkurang = _dataKombinasiProduk.Where(item2 =>
                                                           item2.Key.IDKombinasiProduk == item.IDKombinasiProduk &&
                                                           item2.Key.IDJenisPerpindahanStok != 18 &&
                                                           item2.Key.Status == false).Sum(item2 => item2.Jumlah),
                });

                LabelTotalStokAkhir.Text  = _newData.Sum(item => item.StokAkhir).ToFormatHargaBulat();
                LabelTotalHargaBeli.Text  = _newData.Sum(item => item.SubtotalHargaBeli).ToFormatHarga();
                LabelTotalHargaJual.Text  = _newData.Sum(item => item.SubtotalHargaJual).ToFormatHarga();
                LabelTotalKeuntungan.Text = _newData.Sum(item => item.SubtotalKeuntungan).ToFormatHarga();

                LabelTotalStokAkhir1.Text  = LabelTotalStokAkhir.Text;
                LabelTotalHargaBeli1.Text  = LabelTotalHargaBeli.Text;
                LabelTotalHargaJual1.Text  = LabelTotalHargaJual.Text;
                LabelTotalKeuntungan1.Text = LabelTotalKeuntungan.Text;

                LabelTotalHeader.Text = "TOTAL";
                LabelTotalFooter.Text = "TOTAL";

                RepeaterLaporaKolom1.DataSource = _newData;
                RepeaterLaporaKolom1.DataBind();

                RepeaterLaporan.DataSource = _newData;
                RepeaterLaporan.DataBind();

                DateTime _tanggalAkhir = DateTime.Now;

                Response.Write(_tanggalAwal + "<br/>");
                Response.Write(_tanggalAkhir + "<br/>");
                Response.Write(_tanggalAkhir - _tanggalAwal);

                return(_newData);
            }
            else
            {
                LabelTotalStokAkhir.Text  = "0";
                LabelTotalHargaBeli.Text  = "0";
                LabelTotalHargaJual.Text  = "0";
                LabelTotalKeuntungan.Text = "0";

                LabelTotalStokAkhir1.Text  = LabelTotalStokAkhir.Text;
                LabelTotalHargaBeli1.Text  = LabelTotalHargaBeli.Text;
                LabelTotalHargaJual1.Text  = LabelTotalHargaJual.Text;
                LabelTotalKeuntungan1.Text = LabelTotalKeuntungan.Text;

                RepeaterLaporan.DataSource = null;
                RepeaterLaporan.DataBind();

                return(null);
            }
        }
    }
예제 #2
0
    private IQueryable <dynamic> LoadStokProduk()
    {
        DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext();

        string _tempPencarian = string.Empty;

        #region TEMPAT
        _tempPencarian = "?IDTempat=" + DropDownListTempat.SelectedValue;

        IQueryable <TBStokProduk> _stokProduk;

        if (DropDownListTempat.SelectedValue == "0")
        {
            _stokProduk = db.TBStokProduks.Where(item => item.TBKombinasiProduk.TBProduk._IsActive);
        }
        else
        {
            _stokProduk = db.TBStokProduks
                          .Where(item =>
                                 item.IDTempat == DropDownListTempat.SelectedValue.ToInt() &&
                                 item.TBKombinasiProduk.TBProduk._IsActive);
        }
        #endregion

        #region STATUS STOK
        _tempPencarian += "&IDJenisStok=" + DropDownListJenisStok.SelectedValue;

        if (DropDownListJenisStok.SelectedValue == "1")
        {
            _stokProduk = _stokProduk.Where(item => item.Jumlah > 0);
        }
        else if (DropDownListJenisStok.SelectedValue == "2")
        {
            _stokProduk = _stokProduk.Where(item => item.Jumlah == 0);
        }
        else if (DropDownListJenisStok.SelectedValue == "3")
        {
            _stokProduk = _stokProduk.Where(item => item.Jumlah < 0);
        }
        #endregion

        #region KODE
        if (!string.IsNullOrWhiteSpace(TextBoxKode.Text))
        {
            _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.KodeKombinasiProduk.Contains(TextBoxKode.Text));
            TextBoxKode.Focus();

            _tempPencarian += "&Kode=" + TextBoxKode.Text;
        }
        #endregion

        #region PRODUK
        if (!string.IsNullOrWhiteSpace(TextBoxProduk.Text))
        {
            _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.TBProduk.Nama.Contains(TextBoxProduk.Text));
            TextBoxProduk.Focus();

            _tempPencarian += "&Produk=" + TextBoxProduk.Text;
        }
        #endregion

        #region WARNA
        if (DropDownListWarna.SelectedValue != "-1")
        {
            _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.TBProduk.IDWarna == DropDownListWarna.SelectedValue.ToInt());

            TextBoxProduk.Focus();
            _tempPencarian += "&IDWarna=" + DropDownListWarna.SelectedValue;
        }
        #endregion

        #region HARGA JUAL
        if (!string.IsNullOrWhiteSpace(TextBoxHargaJual.Text))
        {
            if (TextBoxHargaJual.Text.Contains("-"))
            {
                string[] _angka = TextBoxHargaJual.Text.Split('-');
                _stokProduk = _stokProduk.Where(item => item.HargaJual >= _angka[0].ToDecimal() && item.HargaJual <= _angka[1].ToDecimal()).OrderBy(item => item.HargaJual);
            }
            else
            {
                _stokProduk = _stokProduk.Where(item => item.HargaJual == TextBoxHargaJual.Text.ToDecimal());
            }

            TextBoxHargaJual.Focus();
            _tempPencarian += "&HargaJual=" + TextBoxHargaJual.Text;
        }
        #endregion

        #region STOK PRODUK
        if (!string.IsNullOrWhiteSpace(TextBoxStok.Text))
        {
            if (TextBoxStok.Text.Contains("-"))
            {
                string[] _angka = TextBoxStok.Text.Split('-');
                _stokProduk = _stokProduk.Where(item => item.Jumlah >= _angka[0].ToInt() && item.Jumlah <= _angka[1].ToInt()).OrderBy(item => item.Jumlah);
            }
            else
            {
                _stokProduk = _stokProduk.Where(item => item.Jumlah == TextBoxStok.Text.ToInt());
            }

            TextBoxStok.Focus();

            _tempPencarian += "&Stok=" + TextBoxStok.Text;
        }
        #endregion

        #region PEMILIK PRODUK
        if (DropDownListPemilik.SelectedValue != "-1")
        {
            _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.TBProduk.IDPemilikProduk == DropDownListPemilik.SelectedValue.ToInt());

            TextBoxProduk.Focus();
            _tempPencarian += "&IDPemilikProduk=" + DropDownListPemilik.SelectedValue;
        }
        #endregion

        #region ATRIBUT
        if (DropDownListVarian.SelectedValue != "-1")
        {
            _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.IDAtributProduk == DropDownListVarian.SelectedValue.ToInt());

            TextBoxProduk.Focus();
            _tempPencarian += "&IDAtribut=" + DropDownListVarian.SelectedValue;
        }
        #endregion

        #region KATEGORI
        if (DropDownListKategori.SelectedValue != "-1")
        {
            if (DropDownListKategori.SelectedValue == "0")
            {
                _stokProduk = _stokProduk.Where(item => item.TBKombinasiProduk.TBProduk.TBRelasiProdukKategoriProduks.Count == 0);
            }
            else
            {
                _stokProduk = _stokProduk.Where(item =>
                                                item.TBKombinasiProduk.TBProduk.TBRelasiProdukKategoriProduks.Count > 0 &&
                                                item.TBKombinasiProduk.TBProduk.TBRelasiProdukKategoriProduks.FirstOrDefault().IDKategoriProduk == int.Parse(DropDownListKategori.SelectedValue));
            }

            TextBoxProduk.Focus();
            _tempPencarian += "&IDKategori=" + DropDownListKategori.SelectedValue;
        }
        #endregion

        var _dataStok = _stokProduk.Select(item => new
        {
            IDProduk          = item.TBKombinasiProduk.TBProduk.IDProduk,
            IDKombinasiProduk = item.IDKombinasiProduk,
            Kode      = item.TBKombinasiProduk.KodeKombinasiProduk,
            Atribut   = item.TBKombinasiProduk.TBAtributProduk.Nama,
            HargaJual = item.HargaJual.Value,
            Jumlah    = item.Jumlah.Value
        });

        ButtonPrint.OnClientClick = "return popitup('ProdukPrint.aspx" + _tempPencarian + "')";

        if (_dataStok.Count() > 0)
        {
            var _dataProduk = _dataStok.Select(item => item.IDProduk).Distinct();

            var _produk = db.TBProduks
                          .Where(item => _dataProduk.Any(item2 => item2 == item.IDProduk))
                          .Select(item => new
            {
                ID            = item.IDProduk,
                Produk        = item.Nama,
                Kategori      = (item.TBRelasiProdukKategoriProduks.Count > 0) ? item.TBRelasiProdukKategoriProduks.FirstOrDefault().TBKategoriProduk.Nama : "",
                PemilikProduk = item.TBPemilikProduk.Nama,
                Warna         = item.TBWarna.Nama,
                Stok          = _dataStok.Where(item2 => item2.IDProduk == item.IDProduk)
            }).OrderBy(item => item.Produk);

            RepeaterProduk.DataSource = _produk;
            RepeaterProduk.DataBind();

            LabelTotalJumlah.Text  = _dataStok.Sum(item => item.Jumlah).ToFormatHargaBulat();
            LabelTotalNominal.Text = _dataStok.ToArray().Sum(item => item.Jumlah * item.HargaJual).ToFormatHarga();

            return(_produk);
        }
        else
        {
            RepeaterProduk.DataSource = null;
            RepeaterProduk.DataBind();

            LabelTotalJumlah.Text  = "0";
            LabelTotalNominal.Text = "0";

            return(null);
        }
    }