private void buttonSimpan_Click(object sender, EventArgs e)
        {
            FormUtama          frmUtama = (FormUtama)this.Owner.MdiParent;
            FormDaftarJobOrder form     = (FormDaftarJobOrder)this.Owner;

            //buat object bertipe notapenjualan
            NotaPenjualan nota = new NotaPenjualan();

            nota.NoNotaPenjualan = comboBoxNoNotaJual.Text;

            //buat objek bertipe barang
            Barang br = new Barang();

            br.KodeBarang = comboBoxItem.Text.Substring(0, 5);
            // ammil dari combo box item, karena nama berada di index ke 8, dengan panjang karakter sesuai text dikurangi 8
            br.Nama = comboBoxItem.Text.Substring(8, comboBoxItem.Text.Length - 8);

            //buat object bertipe job order
            string   kode     = textBoxKodeJobOrder.Text;
            int      quant    = int.Parse(textBoxQuantity.Text);
            int      material = 0;
            int      labor    = HitungGrandTotal();
            int      overhead = 0;
            DateTime pMulai   = dateTimePickerMulai.Value;
            DateTime pSelesai = dateTimePickerSelesai.Value;
            string   pStatus  = "P";
            JobOrder job      = new JobOrder(kode, quant, labor, material, overhead, pMulai, pSelesai, pStatus, br, nota);

            //data barang diperoleh dari data gridview
            for (int i = 0; i < dataGridViewJobOrder.Rows.Count; i++)
            {
                //buat object bertipe karyawan
                Karyawan k = new Karyawan();
                //tambahkan informasi karyawan
                //hati hati dalam menambahkan
                k.IdKaryawan = dataGridViewJobOrder.Rows[i].Cells["idKaryawan"].Value.ToString();
                k.Nama       = dataGridViewJobOrder.Rows[i].Cells["nama"].Value.ToString();
                k.Gender     = dataGridViewJobOrder.Rows[i].Cells["gender"].Value.ToString();
                k.NoTelepon  = dataGridViewJobOrder.Rows[i].Cells["noTelp"].Value.ToString();
                //simpan  data satuan dan gaji
                string pSat  = dataGridViewJobOrder.Rows[i].Cells["satuan"].Value.ToString();
                int    pGaji = int.Parse(dataGridViewJobOrder.Rows[i].Cells["gaji"].Value.ToString());
                //buat object detiljoborder dan tambahkan
                DetilJobOrder detilJob = new DetilJobOrder(k, pSat, pGaji);
                //simpan detil job
                job.TambahDetilJobOrder(k, pSat, pGaji);
            }

            //inser ke database joborder
            string hasilTambahJob = JobOrder.TambahData(job);

            if (hasilTambahJob == "1") //jika berhasil maka insert jurnal dan detil jurnal
            {
                MessageBox.Show("Job Order telah dibuat", "Info");

                //tambah posting ke jurnal
                //karena pembuatan job order tidak perlu ditambahkan ke jurnal
                //insert jurnal pembayaran karyawan
                // 2 kali insert ke jurnal  1, untuk membebankan ke wip, 2, untuk pembayaran tenaga kerja
                string idtrans  = "";
                string ket      = "";
                string idJurnal = Jurnal.GenerateIdJurnal();

                //1.membebankan ke wip
                idtrans = "005";
                ket     = "Menghitung dan membebankan biaya tenaga kerja langsung terhadap Job Order no 123";

                Transaksi trans = new Transaksi();
                //transaksi membebankan biaya tenaga ke Job Order (id transkasi 005);
                trans.IdTransaksi = idtrans;
                trans.Keterangan  = ket;

                //buat object bertipe jurnal
                Jurnal jurnal = new Jurnal();
                //tambahkan data
                jurnal.IdJurnal = int.Parse(idJurnal);
                jurnal.Tanggal  = dateTimePickerMulai.Value;

                jurnal.NomorBukti = comboBoxNoNotaJual.Text;
                jurnal.Jenis      = "JU";
                jurnal.Periode    = pPeriode;
                jurnal.Transaksi  = trans;

                //isi detil jurnalnya
                totalGaji = HitungGrandTotal(); // panggil method  untuk mendapatkan total gaji
                jurnal.TambahDetilJurnalMenghitungBiayaTK(totalGaji);

                //simpan ke tabel _jurnal
                string hasilTambahJurnal = Jurnal.TambahData(jurnal);
                if (hasilTambahJurnal == "1")
                {
                    idJurnal = Jurnal.GenerateIdJurnal();
                    idtrans  = "006";
                    ket      = "Membayar biaya tenaga kerja langsung secara tunai";

                    Transaksi trans2 = new Transaksi();
                    //transaksi membayar secara tunai(id transkasi 006);
                    trans2.IdTransaksi = idtrans;
                    trans2.Keterangan  = ket;

                    //buat object bertipe jurnal
                    Jurnal jurnal2 = new Jurnal();
                    //tambahkan data
                    jurnal2.IdJurnal = int.Parse(idJurnal);
                    jurnal2.Tanggal  = dateTimePickerMulai.Value;

                    jurnal2.NomorBukti = comboBoxNoNotaJual.Text;
                    jurnal2.Jenis      = "JU";
                    jurnal2.Periode    = pPeriode;
                    jurnal2.Transaksi  = trans2;

                    jurnal2.TambahDetilJurnalPembayaranTK(totalGaji);

                    hasilTambahJurnal = Jurnal.TambahData(jurnal2);
                    if (hasilTambahJurnal == "1")
                    {
                        MessageBox.Show("berhasil posting ke jurnal");
                        this.Close();
                        form.FormDaftarJobOrder_Load(sender, e); //supaya formdaftar job order menampilkan daftar terbaru
                    }
                    else
                    {
                        MessageBox.Show("gagal posting ke jurnal" + hasilTambahJurnal);
                    }
                }
                else
                {
                    MessageBox.Show("gagal posting ke jurnal" + hasilTambahJurnal);
                }
            }
            else
            {
                MessageBox.Show("Data nota jual gagal tersimpan. Pesan kesalahan : " + hasilTambahJob, "Kesalahan");
            }
        }