void POSLineItemModal_Loaded(object sender, RoutedEventArgs e)
 {
     _vm = DataContext as POSLineItemViewModel;
     rbUnits.IsChecked = true;
     this.cmbProducts.ItemsSource = _vm.Products;
     
 }
        private void AddProduct(object sender)
        {
            try
            {
                _vm = DataContext as POSLineItemViewModel;
                bool isInvalid = false;
                Button cmd = (Button)sender;
                if (cmbProducts.SelectedItem == null || cmbProducts.SelectedIndex == -1 || cmbProducts.SelectedIndex == 0)
                {
                    MessageBox.Show(
                        _messageResolver.GetText("sl.pos.addlineitem.modal.message.productnotselected")/*"Select a product in product dropdown list."*/
                        , _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
                        , MessageBoxButton.OK);
                    isInvalid = true;
                }
                if (Convert.ToDouble(txtQty.Text) <= 0 || txtQty.Text.Trim() == "")
                {
                    MessageBox.Show(
                        _messageResolver.GetText("sl.pos.addlineitem.modal.message.quantityzero")/*"Quantity should not be zero or empty."*/
                        , _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
                        , MessageBoxButton.OK); ;
                    isInvalid = true;
                }

                if (!isInvalid)
                {
                    if (_vm.Qty > _vm.AvailableProductInv)
                    {
                        string msg = _messageResolver.GetText("sl.pos.addlineitem.modal.message.sellMoreThanAvailable");
                        /*"Sorry, you cannot sell more than the available inventory.";*/
                        if (_vm.ReceiveReturnables)
                            msg = _messageResolver.GetText("sl.pos.addlineitem.modal.message.receiveMoreThanRequired");
                        /*"Sorry, you cannot receive more than required returnables for this sale.";*/

                        MessageBox.Show(msg,
                            "!" + _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
                            , MessageBoxButton.OK);
                        txtQty.Focus();
                        txtQty.SelectAll();
                        isInvalid = true;
                    }
                }

                if (!isInvalid)
                {
                    MultipleAddProduct pro = new MultipleAddProduct()
                    {
                        Product = _vm.SelectedProduct,
                        Quantity = _vm.Qty,
                        TotalPrice = _vm.TotalPrice,
                        UnitPrice = _vm.UnitPrice,
                        Vat = _vm.VatAmount,
                        VatAmount = _vm.VatAmount,
                        LineItemVatValue = _vm.LineItemVatValue,
                        LineItemType = _vm.LineItemType
                    };
                   
                    _vm.AddProduct(pro);

                    fireQtyChangedEvent = false;
                    _vm.ClearViewModel();
                    if (cmbProducts.Items.Count > 0)
                        cmbProducts.SelectedIndex = 0;
                    hlViewAdded.Text = _vm.ButtonNameText;

                    rbUnits.IsChecked = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message
                    , _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
                    , MessageBoxButton.OK);
            }
        }
 private void rbBulk_Checked(object sender, RoutedEventArgs e)
 {
     if (!isInitialized)
         return;
     _vm = DataContext as POSLineItemViewModel;
     _vm.LineItemType = Lib.UI.Hierarchy.LineItemType.Bulk;
     _vm.ChangeAvailableQty();
     _vm.RecalcTotal();
 }
        private void txtQty_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (!isInitialized)
                return;
            if (!fireQtyChangedEvent)
            {
                fireQtyChangedEvent = true;
                return;
            }
            try
            {
                if (txtQty.Text == "")
                    txtQty.Text = "0";
                if (_vm == null)
                    _vm = DataContext as POSLineItemViewModel;

                _vm.Qty = Convert.ToDecimal(txtQty.Text);

                if (_vm.Qty > _vm.AvailableProductInv)
                {
                    string msg = _messageResolver.GetText("sl.pos.addlineitem.modal.message.sellMoreThanAvailable");
                    /*"Sorry, you cannot sell more than the available inventory.";*/
                    if (_vm.ReceiveReturnables)
                        msg = _messageResolver.GetText("sl.pos.addlineitem.modal.message.receiveMoreThanRequired");
                    /*"Sorry, you cannot receive more than required returnables for this sale.";*/

                    MessageBox.Show(msg, _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/, MessageBoxButton.OK);
                    _vm.Qty = _vm.AvailableProductInv;
                }
             
                _vm.RecalcTotal();
            }
            catch
            {
                MessageBox.Show(_messageResolver.GetText("sl.pos.addlineitem.modal.message.valueTooLarge")/*"Value was too large."*/
                    , _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
                    , MessageBoxButton.OK);
                txtQty.Text = "0";

            }
        }
 private void cmbProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (!isInitialized)
         return;
     try
     {
         if (cmbProducts.SelectedItem != null)
         {
             _vm = DataContext as POSLineItemViewModel;
             if (cmbProducts.SelectedIndex != 0)
             {
                 _vm.RunProductSelected();
             }
             else
             {
                 _vm.ClearViewModel();
                 cmbProducts.SelectedIndex = 0;
             }
         }
     }
     catch
     {
         MessageBox.Show(
             _messageResolver.GetText("sl.pos.addlineitem.modal.message.valueTooLarge")/*"Value was too large."*/
             , "!" + _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
             , MessageBoxButton.OK);
         _vm.Qty = 0;
     }
 }
 private void btnCancel_Click(object sender, RoutedEventArgs e)
 {
     if (_vm == null)
         _vm = DataContext as POSLineItemViewModel;
     if (
         MessageBox.Show(
         _messageResolver.GetText("sl.pos.addlineitem.modal.message.unsaved")/*"Unsaved changes will be lost."*/
         , "!" + _messageResolver.GetText("sl.pos.addlineitem.modal.ok.message.caption")/*"Distributr: Add Order Line Items"*/
         , MessageBoxButton.OKCancel) == MessageBoxResult.OK)
     {
         _vm.LineItems.Clear();
         this.DialogResult = false;
     }
     else
     {
         return;
     }
 }