private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrWhiteSpace(tbxItemName.Text))
                {
                    errorProviderItem.SetError(tbxItemName, Constants.Messages.RequiredField);
                    tbxItemName.SelectAll();
                    tbxItemName.Focus();
                    return;
                }

                Choice choice;
                Status status;

                ItemMaster item = new ItemMaster();
                item.ItemCode        = tbxItemCode.Text;
                item.ItemName        = tbxItemName.Text;
                item.CompanyID       = (int)tbxCompany.Tag;
                item.ConversionRate  = ExtensionMethods.SafeConversionDecimal(tbxConvRate.Text);
                item.ShortName       = tbxShortName.Text;
                item.Packing         = tbxPacking.Text;
                item.PurchaseRate    = ExtensionMethods.SafeConversionDecimal(tbxPurchaseRate.Text);
                item.MRP             = ExtensionMethods.SafeConversionDecimal(tbxMRP.Text) ?? default(decimal);
                item.SaleRate        = ExtensionMethods.SafeConversionDecimal(tbxSaleRate.Text);
                item.SpecialRate     = ExtensionMethods.SafeConversionDecimal(tbxSpecialRate.Text);
                item.WholeSaleRate   = ExtensionMethods.SafeConversionDecimal(tbxWholeSaleRate.Text);
                item.SaleExcise      = ExtensionMethods.SafeConversionDecimal(tbxSaleExcise.Text);
                item.SurchargeOnSale = ExtensionMethods.SafeConversionDecimal(tbxSCOnSale.Text);
                item.TaxOnSale       = ExtensionMethods.SafeConversionDecimal(tbxTaxOnSale.Text);
                item.Scheme1         = ExtensionMethods.SafeConversionDecimal(tbxScheme1.Text);
                item.Scheme2         = ExtensionMethods.SafeConversionDecimal(tbxScheme2.Text);
                item.PurchaseExcise  = ExtensionMethods.SafeConversionDecimal(tbxPurchaseExcise.Text);
                item.UPC             = tbxUPC.Text;
                Enum.TryParse <Choice>(cbxHalfScheme.SelectedValue.ToString(), out choice);
                item.IsHalfScheme = choice == Choice.Yes;
                Enum.TryParse <Choice>(cbxQtrScheme.SelectedValue.ToString(), out choice);
                item.IsQTRScheme          = choice == Choice.Yes;
                item.SpecialDiscount      = ExtensionMethods.SafeConversionDecimal(tbxSpecialDiscount.Text);
                item.SpecialDiscountOnQty = ExtensionMethods.SafeConversionDecimal(tbxSpecialDiscountOnQty.Text);
                Enum.TryParse <Choice>(cbxFixedDiscount.SelectedValue.ToString(), out choice);
                item.IsFixedDiscount         = choice == Choice.Yes;
                item.FixedDiscountRate       = ExtensionMethods.SafeConversionDecimal(tbxFixedDiscountRate.Text);
                item.MaximumQty              = ExtensionMethods.SafeConversionDecimal(tbxMaxQty.Text);
                item.MaximumDiscount         = ExtensionMethods.SafeConversionDecimal(tbxMaxDiscount.Text);
                item.SurchargeOnPurchase     = ExtensionMethods.SafeConversionDecimal(tbxSCOnPurchase.Text);
                item.TaxOnPurchase           = ExtensionMethods.SafeConversionDecimal(tbxTaxOnPurchase.Text);
                item.DiscountRecieved        = ExtensionMethods.SafeConversionDecimal(tbxDiscountRecieved.Text);
                item.SpecialDiscountRecieved = ExtensionMethods.SafeConversionDecimal(tbxSpecialDiscountRecieved.Text);
                item.QtyPerCase              = ExtensionMethods.SafeConversionDecimal(tbxQtyPerCase.Text);
                item.Location       = tbxLocation.Text;
                item.MinimumStock   = ExtensionMethods.SafeConversionInt(tbxMinimumStock.Text);
                item.MaximumStock   = ExtensionMethods.SafeConversionInt(tbxMaximumStock.Text);
                item.SaleTypeId     = (cbxSaleType.SelectedItem as AccountLedgerMaster).AccountLedgerID;
                item.PurchaseTypeId = (cbxPurchaseType.SelectedItem as AccountLedgerMaster).AccountLedgerID;
                Enum.TryParse <Status>(cbxStatus.SelectedValue.ToString(), out status);
                item.Status  = status == Status.Active;
                item.HSNCode = tbxHSNCode.Text;

                bool actionResult = false;
                // if form is in Edit mode then udate item , else add item
                if (_itemId == 0)
                {
                    actionResult = applicationFacade.AddNewItem(item);
                }
                else
                {
                    actionResult = applicationFacade.UpdateItem(item);
                }

                //Close this form if operation is successful
                if (actionResult)
                {
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }