public void UpdateTest()
        {
            var obj = _bll.GetByID("2fb82570-d64e-4f2d-bd03-aab5bdf75884");

            obj.nota       = "201701210010";
            obj.keterangan = "keterangan";

            foreach (var itemRetur in obj.item_retur)
            {
                itemRetur.jumlah_retur += 1;
                itemRetur.harga        += 1000;
                itemRetur.entity_state  = EntityState.Modified;
            }

            var validationError = new ValidationError();

            var result = _bll.Update(obj, ref validationError);

            Console.WriteLine("Error : " + validationError.Message);

            Assert.IsTrue(result != 0);

            var updatedObj = _bll.GetByID(obj.retur_beli_produk_id);

            Assert.IsNotNull(updatedObj);

            Assert.AreEqual(obj.retur_beli_produk_id, updatedObj.retur_beli_produk_id);
            Assert.AreEqual(obj.beli_produk_id, updatedObj.beli_produk_id);
            Assert.AreEqual(obj.pengguna_id, updatedObj.pengguna_id);
            Assert.AreEqual(obj.supplier_id, updatedObj.supplier_id);
            Assert.AreEqual(obj.nota, updatedObj.nota);
            Assert.AreEqual(obj.tanggal, updatedObj.tanggal);
            Assert.AreEqual(obj.keterangan, updatedObj.keterangan);
            Assert.AreEqual(obj.total_nota, updatedObj.total_nota);
        }
        protected override void Simpan()
        {
            if (this._supplier == null || txtSupplier.Text.Length == 0)
            {
                MsgHelper.MsgWarning("'Supplier' tidak boleh kosong !");
                txtSupplier.Focus();

                return;
            }

            var total = SumGrid(this._listOfItemRetur);

            if (!(total > 0))
            {
                MsgHelper.MsgWarning("Anda belum melengkapi inputan data produk !");
                return;
            }

            if (!MsgHelper.MsgKonfirmasi("Apakah proses ingin dilanjutkan ?"))
            {
                return;
            }

            if (_isNewData)
            {
                _retur = new ReturBeliProduk();
            }

            _retur.beli_produk_id = this._beli.beli_produk_id;
            _retur.BeliProduk     = this._beli;
            _retur.pengguna_id    = this._pengguna.pengguna_id;
            _retur.Pengguna       = this._pengguna;
            _retur.supplier_id    = this._supplier.supplier_id;
            _retur.Supplier       = this._supplier;
            _retur.nota           = txtNota.Text;
            _retur.tanggal        = dtpTanggal.Value;
            _retur.keterangan     = txtKeterangan.Text;

            _retur.item_retur = this._listOfItemRetur.Where(f => f.Produk != null).ToList();

            if (!_isNewData) // update
            {
                _retur.item_retur_deleted = _listOfItemReturDeleted;
            }

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

            using (new StCursor(Cursors.WaitCursor, new TimeSpan(0, 0, 0, 0)))
            {
                if (_isNewData)
                {
                    result = _bll.Save(_retur, ref validationError);
                }
                else
                {
                    result = _bll.Update(_retur, ref validationError);
                }

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

                    _supplier = null;
                    _listOfItemRetur.Clear();
                    _listOfItemReturDeleted.Clear();

                    this.Close();
                }
                else
                {
                    if (validationError.Message.NullToString().Length > 0)
                    {
                        MsgHelper.MsgWarning(validationError.Message);
                        base.SetFocusObject(validationError.PropertyName, this);
                    }
                    else
                    {
                        MsgHelper.MsgUpdateError();
                    }
                }
            }
        }