private void btnSimpanPenjualan_Click(object sender, EventArgs e) { foreach (Control ctrl in mtpPenjualan.Controls) { if (ctrl is TextBox && ctrl.Text.Trim() == "" && ctrl.Name != "txtTotalHarga") { MessageBox.Show("Data tidak boleh ada yang kosong."); return; } } Penjualan penjualan = Penjualan.FindOneByKode(txtKodePenjualan.Text); Penjualan penjualanBaru = new Penjualan(); if (penjualan == null) { penjualanBaru.setCustomer(Customer.FindOneById(id_customer)); penjualanBaru.setKode(txtKodePenjualan.Text); try { penjualanBaru.Insert(); penjualan = Penjualan.FindOneByKode(penjualanBaru.getKode()); } catch (Exception error) { MessageBox.Show(error.Message); } } PenjualanDetail penjualanDetail = PenjualanDetail. FindOneByIdBarangAndIdPenjualan(id_barang_penjualan, penjualan.getId()); if (penjualanDetail == null) { PenjualanDetail penjualanDetailBaru = new PenjualanDetail(); penjualanDetailBaru.setBarang(Barang.FindOneById(id_barang_penjualan)); Barang barang = penjualanDetailBaru.getBarang(); int kuantitas = Convert.ToInt32(txtKuantitasPenjualan.Text); penjualanDetailBaru.setKuantitas(kuantitas); penjualanDetailBaru.setHargaBarang(Convert.ToDecimal(txtHargaBarangPenjualan.Text)); penjualanDetailBaru.setPenjualan(penjualan); if (kuantitas > barang.getJumlah()) { MessageBox.Show("Jumlah barang yang dipesan tidak mencukupi."); } else if (kuantitas < 0) { MessageBox.Show("Kuantitas tidak valid."); } else { try { penjualanDetailBaru.Insert(); barang.setJumlah(barang.getJumlah() - kuantitas); barang.Update(); MessageBox.Show("Barang dengan kode " + penjualanDetailBaru.getBarang().getKode() + " berhasil dimasukkan pada faktur dengan kode " + penjualan.getKode()); } catch (Exception error) { MessageBox.Show(error.Message); } } } else { Barang barang = penjualanDetail.getBarang(); int kuantitas = Convert.ToInt32(txtKuantitasPenjualan.Text); int kuantitasLama = penjualanDetail.getKuantitas(); penjualanDetail.setKuantitas(kuantitas); penjualanDetail.setHargaBarang(Convert.ToDecimal(txtHargaBarangPenjualan.Text)); if (kuantitas > barang.getJumlah() + kuantitasLama) { MessageBox.Show("Jumlah barang yang dipesan tidak mencukupi."); } else if (kuantitas < 0) { MessageBox.Show("Kuantitas tidak valid."); } else { try { penjualanDetail.Update(); barang.setJumlah(barang.getJumlah() - kuantitas + kuantitasLama); barang.Update(); MessageBox.Show("Barang dengan kode " + penjualanDetail.getBarang().getKode() + " pada faktur dengan kode " + penjualan.getKode()); } catch (Exception error) { MessageBox.Show(error.Message); } } } DataTable dt = PenjualanDetail.FindByIdPenjualan(penjualan.getId()); dgvPenjualanDetail.DataSource = dt; dgvPenjualanDetail.Refresh(); decimal sum = 0; foreach (DataRow dr in dt.Rows) { sum += Convert.ToDecimal(dr["harga_barang"]) * Convert.ToInt32(dr["kuantitas"]); } txtTotalHarga.Text = sum.ToString(); }