public static void Update(DataClassesDatabaseDataContext db, TBSupplier supplier, TBStokBahanBaku stokBahanBaku, decimal harga) { if (supplier != null) { TBHargaSupplier hargaSupplier = db.TBHargaSuppliers.FirstOrDefault(item => item.TBSupplier == supplier && item.TBStokBahanBaku == stokBahanBaku); if (hargaSupplier == null) { hargaSupplier = new TBHargaSupplier { TBSupplier = supplier, Tanggal = DateTime.Now, Harga = harga, TBStokBahanBaku = stokBahanBaku }; db.TBHargaSuppliers.InsertOnSubmit(hargaSupplier); } else { hargaSupplier.Tanggal = DateTime.Now; hargaSupplier.Harga = harga; } } }
private void CariHargaSupplierVendor() { TextBoxHargaSupplier.Text = "0.00"; TextBoxJumlah.Text = "1.00"; TextBoxPotonganHargaSupplier.Text = "0.00"; using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { TBHargaSupplier hargaSupplier = db.TBHargaSuppliers.FirstOrDefault(item => item.IDSupplier == DropDownListSupplier.SelectedValue.ToInt() && item.IDStokBahanBaku == DropDownListStokBahanBaku.SelectedValue.ToInt()); if (hargaSupplier != null) { TextBoxHargaSupplier.Text = hargaSupplier.Harga.ToFormatHarga(); LabelSatuan.Text = "/" + hargaSupplier.TBStokBahanBaku.TBBahanBaku.TBSatuan1.Nama; } else { LabelSatuan.Text = "/" + db.TBStokBahanBakus.FirstOrDefault(item => item.IDStokBahanBaku == DropDownListStokBahanBaku.SelectedValue.ToInt()).TBBahanBaku.TBSatuan1.Nama; } } }
protected void ButtonSimpan_Click(object sender, EventArgs e) { if (Page.IsValid) { peringatan.Visible = false; PenggunaLogin pengguna = (PenggunaLogin)Session["PenggunaLogin"]; List <POProduksiDetail_Model> ViewStateListDetail = (List <POProduksiDetail_Model>)ViewState["ViewStateListDetail"]; if (ViewStateListDetail.Count > 0) { string IDPOProduksiBahanBaku = string.Empty; TBPOProduksiBahanBaku produksiBahanBaku = null; bool statusBerhasil = false; try { using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { if (!string.IsNullOrEmpty(Request.QueryString["edit"])) { produksiBahanBaku = db.TBPOProduksiBahanBakus.FirstOrDefault(item => item.IDPOProduksiBahanBaku == Request.QueryString["edit"]); if (produksiBahanBaku.IDProyeksi != null) { foreach (var item in produksiBahanBaku.TBPOProduksiBahanBakuDetails.OrderByDescending(data => data.TBBahanBaku.Nama)) { decimal jumlah = item.Jumlah * item.TBBahanBaku.Konversi.Value; foreach (var item2 in db.TBProyeksiKomposisis.Where(item2 => item2.IDProyeksi == produksiBahanBaku.IDProyeksi && item2.BahanBakuDasar == true && item2.IDBahanBaku == item.IDBahanBaku).OrderByDescending(item2 => item2.TBBahanBaku.Nama).ThenByDescending(item2 => item2.LevelProduksi)) { if (item2.Sisa + jumlah <= item2.Jumlah) { item2.Sisa = item2.Sisa + jumlah; jumlah = 0; break; } else { jumlah = (jumlah + item2.Sisa) - item2.Jumlah; item2.Sisa = item2.Jumlah; } } } } db.TBPOProduksiBahanBakuDetails.DeleteAllOnSubmit(produksiBahanBaku.TBPOProduksiBahanBakuDetails); produksiBahanBaku.TBPOProduksiBahanBakuDetails.Clear(); produksiBahanBaku.IDTempat = pengguna.IDTempat; produksiBahanBaku.IDPengguna = pengguna.IDPengguna; produksiBahanBaku.EnumJenisProduksi = (int)PilihanEnumJenisProduksi.PurchaseOrder; produksiBahanBaku.Tanggal = TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute); } else { db.Proc_InsertPOProduksiBahanBaku(ref IDPOProduksiBahanBaku, pengguna.IDTempat, pengguna.IDPengguna, (int)PilihanEnumJenisProduksi.PurchaseOrder, TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute)); produksiBahanBaku = db.TBPOProduksiBahanBakus.FirstOrDefault(item => item.IDPOProduksiBahanBaku == IDPOProduksiBahanBaku); } produksiBahanBaku.IDProyeksi = TextBoxIDProyeksi.Text != string.Empty ? TextBoxIDProyeksi.Text : null; produksiBahanBaku.IDSupplier = DropDownListSupplier.SelectedValue.ToInt(); produksiBahanBaku.IDPenggunaPIC = DropDownListPenggunaPIC.SelectedValue.ToInt(); produksiBahanBaku.IDPenggunaDP = null; produksiBahanBaku.IDJenisPOProduksi = null; produksiBahanBaku.IDJenisPembayaran = null; produksiBahanBaku.LevelProduksi = null; produksiBahanBaku.TanggalDownPayment = null; produksiBahanBaku.TanggalJatuhTempo = TextBoxTanggalJatuhTempo.Text.ToDateTime(); produksiBahanBaku.TanggalPengiriman = TextBoxTanggalPengiriman.Text.ToDateTime(); produksiBahanBaku.TBPOProduksiBahanBakuDetails.AddRange(ViewStateListDetail.OrderBy(item => item.BahanBaku).Select(item => new TBPOProduksiBahanBakuDetail { IDBahanBaku = item.IDBahanBaku, IDSatuan = item.IDSatuan, HargaPokokKomposisi = item.HargaPokokKomposisi, BiayaTambahan = item.BiayaTambahan, TotalHPP = item.TotalHPP, HargaSupplier = item.Harga, PotonganHargaSupplier = item.PotonganHarga, TotalHargaSupplier = item.TotalHarga, Jumlah = item.Jumlah, Sisa = item.Sisa })); produksiBahanBaku.TotalJumlah = produksiBahanBaku.TBPOProduksiBahanBakuDetails.Sum(item => item.Jumlah); produksiBahanBaku.EnumJenisHPP = (int)PilihanEnumJenisHPP.HargaSupplierVendor; produksiBahanBaku.SubtotalBiayaTambahan = produksiBahanBaku.TBPOProduksiBahanBakuDetails.Sum(item => (item.Jumlah * item.BiayaTambahan)); produksiBahanBaku.SubtotalTotalHPP = produksiBahanBaku.TBPOProduksiBahanBakuDetails.Sum(item => (item.Jumlah * item.TotalHPP)); produksiBahanBaku.SubtotalTotalHargaSupplier = Math.Round(produksiBahanBaku.TBPOProduksiBahanBakuDetails.Sum(item => (item.Jumlah * item.TotalHargaSupplier)), 2, MidpointRounding.AwayFromZero); produksiBahanBaku.PotonganPOProduksiBahanBaku = TextBoxPotonganPO.Text.ToDecimal(); produksiBahanBaku.BiayaLainLain = TextBoxBiayaLainLain.Text.ToDecimal(); produksiBahanBaku.PersentaseTax = HiddenFieldTax.Value.ToDecimal(); decimal subtotal = produksiBahanBaku.SubtotalTotalHargaSupplier.Value + produksiBahanBaku.BiayaLainLain.Value - produksiBahanBaku.PotonganPOProduksiBahanBaku.Value; produksiBahanBaku.Tax = Math.Round((subtotal * produksiBahanBaku.PersentaseTax.Value), 2, MidpointRounding.AwayFromZero); produksiBahanBaku.Grandtotal = subtotal + produksiBahanBaku.Tax; produksiBahanBaku.DownPayment = 0; produksiBahanBaku.Keterangan = TextBoxKeterangan.Text; if (produksiBahanBaku.IDProyeksi != null) { foreach (var item in produksiBahanBaku.TBPOProduksiBahanBakuDetails.OrderBy(data => data.TBBahanBaku.Nama)) { decimal jumlah = item.Jumlah * item.TBBahanBaku.Konversi.Value; TBProyeksiKomposisi[] proyeksiKomposisi = db.TBProyeksiKomposisis.Where(item2 => item2.IDProyeksi == produksiBahanBaku.IDProyeksi && item2.BahanBakuDasar == true && item2.IDBahanBaku == item.IDBahanBaku).OrderBy(item2 => item2.TBBahanBaku.Nama).ThenBy(item2 => item2.LevelProduksi).ToArray(); int count = proyeksiKomposisi.Count(); foreach (var item2 in proyeksiKomposisi) { if (item2.Sisa - jumlah >= 0) { item2.Sisa = item2.Sisa - jumlah; jumlah = 0; break; } else { if (count > 1) { jumlah = Math.Abs(item2.Sisa - jumlah); item2.Sisa = 0; } else { item2.Sisa = item2.Sisa - jumlah; } } count = count - 1; } } } TBHargaSupplier[] daftarHargaSupplier = db.TBHargaSuppliers.Where(item => item.IDSupplier == produksiBahanBaku.IDSupplier).ToArray(); foreach (var item in ViewStateListDetail) { TBHargaSupplier hargaSupplier = daftarHargaSupplier.FirstOrDefault(data => data.IDStokBahanBaku == item.IDStokBahanBaku); if (hargaSupplier == null) { db.TBHargaSuppliers.InsertOnSubmit(new TBHargaSupplier() { IDStokBahanBaku = item.IDStokBahanBaku, IDSupplier = produksiBahanBaku.IDSupplier, Tanggal = produksiBahanBaku.Tanggal, Harga = item.Harga }); } else { hargaSupplier.Tanggal = produksiBahanBaku.Tanggal; hargaSupplier.Harga = item.Harga; } } db.SubmitChanges(); statusBerhasil = true; } } catch (Exception ex) { if (statusBerhasil != true && string.IsNullOrEmpty(Request.QueryString["edit"])) { using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { produksiBahanBaku = db.TBPOProduksiBahanBakus.FirstOrDefault(item => item.IDPOProduksiBahanBaku == IDPOProduksiBahanBaku); if (produksiBahanBaku != null) { db.TBPOProduksiBahanBakuDetails.DeleteAllOnSubmit(produksiBahanBaku.TBPOProduksiBahanBakuDetails); db.TBPOProduksiBahanBakus.DeleteOnSubmit(produksiBahanBaku); db.SubmitChanges(); IDPOProduksiBahanBaku = string.Empty; } } } LogError_Class LogError = new LogError_Class(ex, "Purchase Order Bahan Baku (ButtonSimpan_Click by : " + pengguna.NamaLengkap + ")"); LabelPeringatan.Text = "Terjadi kesalahan, silahkan cek kembali data yang diinputkan"; peringatan.Visible = true; } finally { if (statusBerhasil == true) { if (!string.IsNullOrEmpty(Request.QueryString["edit"])) { Response.Redirect("Detail.aspx?id=" + produksiBahanBaku.IDPOProduksiBahanBaku); } else { Response.Redirect("Default.aspx"); } } } } else { LabelPeringatan.Text = "Tidak ada Bahan Baku yang dipilih"; peringatan.Visible = true; } } }