private void SparepartsTransactionEditorForm_Load(object sender, EventArgs e)
        {
            _presenter.InitFormData();

            if (this.IsSpecialSparepart)
            {
                txtSerialNumber.Enabled = true;
                txtQtyUpdate.Text       = "1";
                txtQtyUpdate.Enabled    = false;
                cbMode.Enabled          = false;
                cbMode.EditValue        = ListTransactionTypeReference.Where(rf => rf.Code == DbConstant.REF_SPAREPART_TRANSACTION_MANUAL_TYPE_PLUS).FirstOrDefault().Id;
            }
            else
            {
                txtSerialNumber.Enabled = false;
                txtQtyUpdate.Text       = "0";
                txtQtyUpdate.Enabled    = true;
            }
        }
        protected override void ExecuteSave()
        {
            ReferenceViewModel selectedTransactionType = ListTransactionTypeReference.Where(x => x.Id == this.TransactionTypeId).FirstOrDefault();

            if (valMode.Validate() && valQty.Validate() && valItemPrice.Validate() &&
                this.StockUpdate > 0 && selectedTransactionType != null &&
                (selectedTransactionType.Value == DbConstant.REF_SPAREPART_TRANSACTION_MANUAL_TYPE_PLUS ||
                 (selectedTransactionType.Value == DbConstant.REF_SPAREPART_TRANSACTION_MANUAL_TYPE_MINUS && this.Stock >= this.StockUpdate)
                )
                )
            {
                bool ok = true;
                if (this.IsSpecialSparepart)
                {
                    if (string.IsNullOrEmpty(this.SerialNumber))
                    {
                        ok = false;
                        this.ShowWarning("Nomor seri harus diisi.");
                    }
                    else if (_presenter.IsSerialNumberExist())
                    {
                        ok = false;
                        this.ShowWarning("Nomor seri " + this.SerialNumber + " sudah digunakan.");
                    }
                }

                if (ok)
                {
                    try
                    {
                        MethodBase.GetCurrentMethod().Info("Save Sparepart Transaction's changes");
                        _presenter.SaveChanges();
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        MethodBase.GetCurrentMethod().Fatal("An error occured while trying to save SparepartManualTransaction: '" + SelectedSparepartManualTransaction.Sparepart.Name + "'", ex);
                        this.ShowError("Proses simpan data transaksi barang bekas: '" + SelectedSparepartManualTransaction.Sparepart.Name + "' gagal!");
                    }
                }
            }
        }