public void SaveTest()
        {
            var obj = new ReturBeliProduk
            {
                beli_produk_id = "27d40236-c8ab-44be-bc47-7a9bbd68c31e",
                supplier_id    = "af01c916-7976-4518-a563-9d2a1851a912",
                nota           = _bll.GetLastNota(),
                tanggal        = DateTime.Today,
                keterangan     = "keterangan header"
            };

            var listOfItemBeli = new List <ItemReturBeliProduk>();

            listOfItemBeli.Add(new ItemReturBeliProduk {
                item_beli_id = "a53a632c-2759-4d85-acc6-0cbb18a0c88b", Produk = new Produk {
                    produk_id = "6e587b32-9d87-4ec3-8e7c-ce15c7b0aecd"
                }, produk_id = "6e587b32-9d87-4ec3-8e7c-ce15c7b0aecd", harga = 50000, jumlah = 4, jumlah_retur = 2
            });
            listOfItemBeli.Add(new ItemReturBeliProduk {
                item_beli_id = "c414c56c-fd01-4e88-bae1-96bfe0f8196a", Produk = new Produk {
                    produk_id = "d7e888eb-6f9b-43ef-9a72-212588d2fb38"
                }, produk_id = "d7e888eb-6f9b-43ef-9a72-212588d2fb38", harga = 2500, jumlah = 2, jumlah_retur = 1
            });

            obj.item_retur = listOfItemBeli; // menghubungkan retur dan item retur

            var validationError = new ValidationError();

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

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

            Assert.IsTrue(result != 0);

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

            Assert.IsNotNull(newObj);
            Assert.AreEqual(obj.retur_beli_produk_id, newObj.retur_beli_produk_id);
            Assert.AreEqual(obj.beli_produk_id, newObj.beli_produk_id);
            Assert.AreEqual(obj.pengguna_id, newObj.pengguna_id);
            Assert.AreEqual(obj.supplier_id, newObj.supplier_id);
            Assert.AreEqual(obj.nota, newObj.nota);
            Assert.AreEqual(obj.tanggal, newObj.tanggal);
            Assert.AreEqual(obj.keterangan, newObj.keterangan);
            Assert.AreEqual(obj.total_nota, newObj.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();
                    }
                }
            }
        }