public void GetLastNotaTest()
        {
            var lastNota = _bll.GetLastNota();

            Assert.AreEqual("201703310001", lastNota);

            lastNota = _bll.GetLastNota();
            Assert.AreEqual("201703310002", lastNota);
        }
        protected override void Simpan()
        {
            if (_isNewData)
            {
                _gaji = new GajiKaryawan();

                if (this._karyawan == null)
                {
                    MsgHelper.MsgWarning("Karyawan belum dipilih");
                    return;
                }

                _gaji.karyawan_id = _karyawan.karyawan_id;
                _gaji.Karyawan    = _karyawan;

                _gaji.bulan = DayMonthHelper.GetBulanAngka(cmbBulan.Text);
                _gaji.tahun = int.Parse(cmbTahun.Text);
            }

            _gaji.pengguna_id = this._pengguna.pengguna_id;
            _gaji.Pengguna    = this._pengguna;
            _gaji.nota        = txtNota.Text;

            _gaji.tanggal   = dtpTanggal.Value;
            _gaji.kehadiran = int.Parse(txtKehadiran.Text);
            _gaji.absen     = int.Parse(txtAbsen.Text);

            _gaji.jumlah_hari = int.Parse(txtJumlahHari.Text);
            _gaji.gaji_pokok  = NumberHelper.StringToDouble(txtGaji.Text);
            _gaji.tunjangan   = NumberHelper.StringToDouble(txtTunjangan.Text);
            _gaji.bonus       = NumberHelper.StringToDouble(txtBonus.Text);
            _gaji.jam         = int.Parse(txtJam.Text);
            _gaji.lembur      = NumberHelper.StringToDouble(txtLembur.Text);
            _gaji.potongan    = NumberHelper.StringToDouble(txtPotongan.Text);

            var result          = 0;
            var validationError = new ValidationError();

            if (_isNewData)
            {
                result = _bll.Save(_gaji, ref validationError);
            }
            else
            {
                result = _bll.Update(_gaji, ref validationError);
            }

            if (result > 0)
            {
                Listener.Ok(this, _isNewData, _gaji);

                if (_isNewData)
                {
                    cmbKaryawan.SelectedIndex = 0;
                    cmbKaryawan.Focus();

                    txtNota.Text = _bll.GetLastNota();
                }
                else
                {
                    this.Close();
                }
            }
            else
            {
                if (validationError.Message != null && validationError.Message.Length > 0)
                {
                    MsgHelper.MsgWarning(validationError.Message);
                    base.SetFocusObject(validationError.PropertyName, this);
                }
                else
                {
                    var pesan = string.Format("Maaf, Data yang Anda masukkan gagal disimpan !\nCek apakah data gaji '{0}' sudah diinputkan.", _gaji.Karyawan.nama_karyawan);
                    MsgHelper.MsgWarning(pesan);
                }
            }
        }