Пример #1
0
        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();
        }