protected void ButtonSimpan_Click(object sender, EventArgs e) { try { if (DropDownListTempatPenerima.Items.Count == 0) { LiteralWarning.Text = Alert_Class.Pesan(TipeAlert.Danger, "Anda harus membuat lokasi tujuan transfer. <a href='/WITAdministrator/Store/Tempat/Pengaturan.aspx'>Buat lokasi baru</a>"); return; } bool StokKurang = false; string TransferBerhasil = string.Empty; using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { PenggunaLogin Pengguna = (PenggunaLogin)Session["PenggunaLogin"]; TBTransferBahanBaku DataTransferBahanBaku = null; TBStokBahanBaku[] daftarStokBahanBaku = db.TBStokBahanBakus.Where(data => data.IDTempat == DropDownListTempatPengirim.SelectedValue.ToInt()).ToArray(); TransferBahanBaku_Class TransferBahanBaku = new TransferBahanBaku_Class(); foreach (RepeaterItem item in RepeaterStokBahanBaku.Items) { Label LabelIDBahanBaku = (Label)item.FindControl("LabelIDBahanBaku"); Label LabelJumlah = (Label)item.FindControl("LabelJumlah"); TextBox TextBoxJumlahTransfer = (TextBox)item.FindControl("TextBoxJumlahTransfer"); HtmlTableRow panelStok = (HtmlTableRow)item.FindControl("panelStok"); if (TextBoxJumlahTransfer.Text.ToDecimal() > 0) { //JIKA JUMLAH TRANSFER VALID TIDAK NULL DAN TIDAK 0 decimal JumlahTransfer = TextBoxJumlahTransfer.Text.ToDecimal(); //PENCARIAN STOK BAHAN BAKU var stokBahanBaku = daftarStokBahanBaku.FirstOrDefault(data => data.IDBahanBaku == LabelIDBahanBaku.Text.ToInt()); if (JumlahTransfer <= (stokBahanBaku.Jumlah / stokBahanBaku.TBBahanBaku.Konversi)) { if (string.IsNullOrWhiteSpace(LabelIDTransferBahanBaku.Text)) { #region MEMBUAT TRANSFER BAHAN BAKU BARU DataTransferBahanBaku = TransferBahanBaku.Tambah(db, Pengguna.IDPengguna, DropDownListTempatPengirim.SelectedValue.ToInt(), DropDownListTempatPenerima.SelectedValue.ToInt(), TextBoxKeterangan.Text); LabelIDTransferBahanBaku.Text = DataTransferBahanBaku.IDTransferBahanBaku; #endregion } else { DataTransferBahanBaku = db.TBTransferBahanBakus.FirstOrDefault(item2 => item2.IDTransferBahanBaku == LabelIDTransferBahanBaku.Text); } //JIKA JUMLAH YANG AKAN DI TRANSFER LEBIH KECIL ATAU SAMA DENGAN JUMLAH STOK StokBahanBaku_Class.UpdateBertambahBerkurang(db, DateTime.Now, Pengguna.IDPengguna, stokBahanBaku, JumlahTransfer, (stokBahanBaku.HargaBeli.Value * stokBahanBaku.TBBahanBaku.Konversi.Value), true, EnumJenisPerpindahanStok.TransferStokKeluar, "Transfer #" + LabelIDTransferBahanBaku.Text); //PENGECEKAN APAKAH SUDAH ADA DI DETAIL var TransferBahanBakuDetail = DataTransferBahanBaku.TBTransferBahanBakuDetails .FirstOrDefault(item2 => item2.IDBahanBaku == stokBahanBaku.IDBahanBaku); if (TransferBahanBakuDetail == null) //DETAIL TRANSFER BAHAN BAKU TIDAK DITEMUKAN MEMBUAT BARU { DataTransferBahanBaku.TBTransferBahanBakuDetails.Add(new TBTransferBahanBakuDetail { IDBahanBaku = stokBahanBaku.IDBahanBaku.Value, IDSatuan = stokBahanBaku.TBBahanBaku.IDSatuanKonversi, HargaBeli = (stokBahanBaku.HargaBeli.Value * stokBahanBaku.TBBahanBaku.Konversi.Value), Jumlah = JumlahTransfer }); } else //JIKA SUDAH TERDAPAT DI DETAIL HANYA MENAMBAHKAN QTY { TransferBahanBakuDetail.Jumlah += JumlahTransfer; } //MENGKOSONGKAN TEXTBOX - LABEL JUMLAH DIISI DENGAN JUMLAH STOK TERBARU TextBoxJumlahTransfer.Text = string.Empty; panelStok.Attributes.Add("class", ""); LabelJumlah.Text = (LabelJumlah.Text.ToDecimal() - JumlahTransfer).ToFormatHarga(); TransferBerhasil += "<br/>" + JumlahTransfer.ToFormatHarga() + " - " + stokBahanBaku.TBBahanBaku.Nama + " " + stokBahanBaku.TBBahanBaku.TBSatuan1.Nama; //MESSAGE TRANSFER YANG BERHASIL } else { //REFRESH LABEL JUMLAH STOK LabelJumlah.Text = (stokBahanBaku.Jumlah / stokBahanBaku.TBBahanBaku.Konversi.Value).ToFormatHarga(); panelStok.Attributes.Add("class", "danger"); StokKurang = true; } } //HANDLE POSTBACK FORMAT HARGA TextBoxJumlahTransfer.Text = TextBoxJumlahTransfer.Text.ToDecimal() == 0 ? string.Empty : TextBoxJumlahTransfer.Text.ToFormatHarga(); } if (DataTransferBahanBaku != null) { //UPDATE DATA TRANSFER BAHAN BAKU DataTransferBahanBaku.TanggalUpdate = DateTime.Now; DataTransferBahanBaku.TotalJumlah = DataTransferBahanBaku.TBTransferBahanBakuDetails.Sum(item2 => item2.Jumlah); DataTransferBahanBaku.GrandTotal = DataTransferBahanBaku.TBTransferBahanBakuDetails.Sum(item2 => item2.Jumlah * item2.HargaBeli); } db.SubmitChanges(); } //MENAMPILKAN MESSAGE LiteralWarning.Text = string.Empty; if (!string.IsNullOrWhiteSpace(TransferBerhasil)) { LiteralWarning.Text += Alert_Class.Pesan(TipeAlert.Success, "Bahan Baku berhasil disimpan" + TransferBerhasil); } if (StokKurang) { LiteralWarning.Text += Alert_Class.Pesan(TipeAlert.Danger, "Stok tidak cukup, silahkan cek kembali"); } } catch (Exception ex) { LiteralWarning.Text = Alert_Class.Pesan(TipeAlert.Danger, ex.Message); LogError_Class LogError = new LogError_Class(ex, Request.Url.PathAndQuery); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PenggunaLogin Pengguna = (PenggunaLogin)Session["PenggunaLogin"]; using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { Tempat_Class ClassTempat = new Tempat_Class(db); #region Default DropDownListJenisStok.Items.Insert(0, new ListItem { Value = "0", Text = "Semua" }); DropDownListJenisStok.Items.Insert(1, new ListItem { Value = "1", Text = "Ada Stok", Selected = true }); DropDownListJenisStok.Items.Insert(2, new ListItem { Value = "2", Text = "Tidak Ada Stok" }); DropDownListJenisStok.Items.Insert(3, new ListItem { Value = "3", Text = "Minus" }); DropDownListCariKategori.DataSource = db.TBKategoriBahanBakus.ToArray(); DropDownListCariKategori.DataTextField = "Nama"; DropDownListCariKategori.DataValueField = "IDKategoriBahanBaku"; DropDownListCariKategori.DataBind(); DropDownListCariKategori.Items.Insert(0, new ListItem { Value = "0", Text = "- Semua -" }); DropDownListCariSatuan.DataSource = db.TBSatuans.ToArray(); DropDownListCariSatuan.DataTextField = "Nama"; DropDownListCariSatuan.DataValueField = "IDSatuan"; DropDownListCariSatuan.DataBind(); DropDownListCariSatuan.Items.Insert(0, new ListItem { Value = "0", Text = "- Semua -" }); var ListTempat = ClassTempat.Data(); DropDownListTempatPengirim.DataSource = ListTempat; DropDownListTempatPengirim.DataTextField = "Nama"; DropDownListTempatPengirim.DataValueField = "IDTempat"; DropDownListTempatPengirim.DataBind(); DropDownListTempatPengirim.Items.Insert(0, new ListItem { Text = "- Lokasi -", Value = "0" }); DropDownListTempatPengirim.SelectedValue = Pengguna.IDTempat.ToString(); DropDownListTempatPenerima.DataSource = ListTempat.Where(item => item.IDTempat != Pengguna.IDTempat); DropDownListTempatPenerima.DataTextField = "Nama"; DropDownListTempatPenerima.DataValueField = "IDTempat"; DropDownListTempatPenerima.DataBind(); TextBoxTanggalKirim.Text = DateTime.Now.ToString("d MMMM yyyy HH:mm"); #endregion var DataTransferBahanBaku = db.TBTransferBahanBakus .FirstOrDefault(item => item.IDTransferBahanBaku == Request.QueryString["id"]); if (DataTransferBahanBaku != null) { //DATA TRANSFER BAHAN BAKU DITEMUKAN if (DataTransferBahanBaku.EnumJenisTransfer == (int)PilihanJenisTransfer.TransferBatal || DataTransferBahanBaku.EnumJenisTransfer == (int)PilihanJenisTransfer.TransferProses || DataTransferBahanBaku.EnumJenisTransfer == (int)PilihanJenisTransfer.TransferSelesai) { //TRANSFER BATAL MAKA COPY TRANSFER BAHAN BAKU LAMA KE TRANSFER BAHAN BAKU BARU TextBoxTanggalKirim.Text = DateTime.Now.ToString("d MMMM yyyy HH:mm"); DropDownListTempatPenerima.SelectedValue = DataTransferBahanBaku.IDTempatPenerima.ToString(); TextBoxKeterangan.Text = "Referensi Transfer #" + DataTransferBahanBaku.IDTransferBahanBaku + " - " + DataTransferBahanBaku.Keterangan; #region MEMBUAT TRANSFER BAHAN BAKU BARU TransferBahanBaku_Class TransferBahanBaku = new TransferBahanBaku_Class(); var TransferBahanBakuBaru = TransferBahanBaku.Tambah(db, Pengguna.IDPengguna, DropDownListTempatPengirim.SelectedValue.ToInt(), DropDownListTempatPenerima.SelectedValue.ToInt(), TextBoxKeterangan.Text); LabelIDTransferBahanBaku.Text = TransferBahanBakuBaru.IDTransferBahanBaku; #endregion Dictionary <int, decimal> ListStokBahanBakuHabis = new Dictionary <int, decimal>(); TBStokBahanBaku[] daftarStokBahanBaku = db.TBStokBahanBakus.Where(item => item.IDTempat == DropDownListTempatPengirim.SelectedValue.ToInt()).ToArray(); //COPY DETAIL TRANSFER LAMA KE DETAIL TRANSFER BARU foreach (var item in DataTransferBahanBaku.TBTransferBahanBakuDetails.ToArray()) { //PENCARIAN STOK BAHAN BAKU var stokBahanBaku = daftarStokBahanBaku.FirstOrDefault(data => data.IDBahanBaku == item.IDBahanBaku); if (item.Jumlah <= (stokBahanBaku.Jumlah / stokBahanBaku.TBBahanBaku.Konversi)) { //JIKA JUMLAH PERMINTAAN LEBIH KECIL ATAU SAMA DENGAN JUMLAH STOK StokBahanBaku_Class.UpdateBertambahBerkurang(db, DateTime.Now, Pengguna.IDPengguna, stokBahanBaku, item.Jumlah, item.HargaBeli, true, EnumJenisPerpindahanStok.TransferStokKeluar, "Transfer #" + LabelIDTransferBahanBaku.Text); //MENAMBAHKAN DI DETAIL TRANSFER TransferBahanBakuBaru.TBTransferBahanBakuDetails.Add(new TBTransferBahanBakuDetail { //IDTRANSFERPBAHANBAKUDETAIL //IDTRANSFERBAHANBAKU IDBahanBaku = item.IDBahanBaku, IDSatuan = item.TBBahanBaku.IDSatuanKonversi, HargaBeli = (stokBahanBaku.HargaBeli.Value * stokBahanBaku.TBBahanBaku.Konversi.Value), Jumlah = item.Jumlah //SUBTOTALHARGABELI }); } else //MENCATAT STOK BAHAN BAKU YANG HABIS { ListStokBahanBakuHabis.Add(stokBahanBaku.IDBahanBaku.Value, item.Jumlah); } } //UPDATE DATA TRANSFERBAHANBAKU TransferBahanBakuBaru.TanggalUpdate = DateTime.Now; TransferBahanBakuBaru.TotalJumlah = TransferBahanBakuBaru.TBTransferBahanBakuDetails.Sum(item2 => item2.Jumlah); TransferBahanBakuBaru.GrandTotal = TransferBahanBakuBaru.TBTransferBahanBakuDetails.Sum(item2 => item2.Jumlah * item2.HargaBeli); db.SubmitChanges(); LoadDataTransferBahanBaku(); //RESET LITERAL WARNING LiteralWarning.Text = ""; if (ListStokBahanBakuHabis.Count > 0) { #region LIST STOK HABIS ADA MAKA MENAMPILKAN STOK APA SAJA YANG HABIS var DataStokBahanBaku = db.TBStokBahanBakus .AsEnumerable() .Where(item => item.IDTempat == Pengguna.IDTempat && ListStokBahanBakuHabis.ContainsKey(item.IDBahanBaku.Value)) .Select(item => new { IDBahanBaku = item.TBBahanBaku.IDBahanBaku, BahanBaku = item.TBBahanBaku.Nama, Kode = item.TBBahanBaku.KodeBahanBaku, IDSatuanKecil = item.TBBahanBaku.IDSatuan, SatuanKecil = item.TBBahanBaku.TBSatuan.Nama, Konversi = item.TBBahanBaku.Konversi, IDSatuanBesar = item.TBBahanBaku.IDSatuanKonversi, SatuanBesar = item.TBBahanBaku.TBSatuan1.Nama, IDKategori = item.TBBahanBaku.TBRelasiBahanBakuKategoriBahanBakus.Count > 0 ? item.TBBahanBaku.TBRelasiBahanBakuKategoriBahanBakus.FirstOrDefault().IDKategoriBahanBaku : 0, Kategori = item.TBBahanBaku.TBRelasiBahanBakuKategoriBahanBakus.Count > 0 ? item.TBBahanBaku.TBRelasiBahanBakuKategoriBahanBakus.FirstOrDefault().TBKategoriBahanBaku.Nama : "", IDStokBahanBaku = item.IDStokBahanBaku, Jumlah = (item.Jumlah / item.TBBahanBaku.Konversi), HargaBeli = (item.HargaBeli * item.TBBahanBaku.Konversi) }).OrderBy(item => item.BahanBaku).ToArray(); RepeaterStokBahanBaku.DataSource = DataStokBahanBaku; RepeaterStokBahanBaku.DataBind(); #endregion #region MENGISI TEXTBOX DENGAN JUMLAH PERMINTAAN foreach (RepeaterItem item in RepeaterStokBahanBaku.Items) { Label LabelIDBahanBaku = (Label)item.FindControl("LabelIDBahanBaku"); TextBox TextBoxJumlahTransfer = (TextBox)item.FindControl("TextBoxJumlahTransfer"); HtmlTableRow panelStok = (HtmlTableRow)item.FindControl("panelStok"); if (ListStokBahanBakuHabis.ContainsKey(LabelIDBahanBaku.Text.ToInt())) { TextBoxJumlahTransfer.Text = ListStokBahanBakuHabis[LabelIDBahanBaku.Text.ToInt()].ToFormatHarga(); panelStok.Attributes.Add("class", "danger"); } } #endregion LiteralWarning.Text = Alert_Class.Pesan(TipeAlert.Danger, "Stok tidak cukup, silahkan cek kembali"); MultiViewTransferBahanBaku.ActiveViewIndex = 0; } else { //JIKA STOK BAHAN BAKU TIDAK HABIS LoadDataStokBahanBaku(); MultiViewTransferBahanBaku.ActiveViewIndex = 1; } } else { //TRANSFER BAHAN BAKU : PENDING LabelIDTransferBahanBaku.Text = DataTransferBahanBaku.IDTransferBahanBaku; LoadDataTransferBahanBaku(); MultiViewTransferBahanBaku.ActiveViewIndex = 1; } } else { //TRANSFER BAHAN BAKU TIDAK DITEMUKAN MEMBUAT TRANSFER BARU MultiViewTransferBahanBaku.ActiveViewIndex = 0; LoadDataStokBahanBaku(); } } } else { LiteralWarning.Text = ""; } }