public SalesInvoice(Window parentWindow, SalesInvoiceInfo invoiceInfo)
        {
            _parentWindow = parentWindow;
            itemInfoList  = new List <SalesItemInfo>();
            itemList      = new List <SalesItemBind>();
            InitializeComponent();
            uomList = BLL.CommonBLL.GetUnitOfMeasure();
            comboUoM.ItemsSource       = uomList;
            comboUoM.DisplayMemberPath = "UnitOfMeasure";
            comboUoM.SelectedValuePath = "UnitOfMeasure";
            if (invoiceInfo == null)
            {
                GetNextInvoiceInfo();
            }
            else
            {
                _invoiceInfo       = invoiceInfo;
                txtInvoiceNum.Text = _invoiceInfo.SalesID.ToString();
                int itemNum = 0;
                itemInfoList = invoiceInfo.SalesItemList.ToList();
                foreach (SalesItemInfo itemInfo in invoiceInfo.SalesItemList)
                {
                    itemNum++;
                    SalesItemBind itemBindInfo = new SalesItemBind();
                    itemBindInfo.ItemNum               = itemNum;
                    itemBindInfo.ItemInfo.ProductID    = itemInfo.ProductID;
                    itemBindInfo.DisplayProductName    = itemInfo.ProductName + " - " + itemInfo.VendorName;
                    itemBindInfo.ItemInfo.DiscountRate = itemInfo.DiscountRate;
                    itemBindInfo.ItemInfo.Qty          = itemInfo.Qty;


                    itemBindInfo.ItemInfo.RetailRate = itemInfo.RetailRate;
                    itemBindInfo.ItemInfo.Unit       = itemInfo.Unit;

                    if (itemInfo.DiscountRate > 0)
                    {
                        itemBindInfo.ItemInfo.Amount = itemInfo.Qty * itemInfo.DiscountRate;
                    }
                    else
                    {
                        itemBindInfo.ItemInfo.Amount = itemInfo.Qty * itemInfo.RetailRate;
                    }

                    itemList.Add(itemBindInfo);
                }

                datagridProduct.ItemsSource = null;
                datagridProduct.ItemsSource = itemList;
                SetTotalAmount();
            }

            _companyInfo = BLL.CommonBLL.GetCompanyInfo();
            AddHotKeys();
        }
        private void datagridProduct_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            try
            {
                if (e.EditAction == DataGridEditAction.Commit)
                {
                    var column = e.Column as DataGridBoundColumn;
                    if (column != null)
                    {
                        SalesItemBind er          = e.Row.Item as SalesItemBind;
                        TextBox       el          = e.EditingElement as TextBox;
                        var           bindingPath = (column.Binding as Binding).Path.Path;
                        if (bindingPath == "ItemInfo.RetailRate")
                        {
                            decimal retailRate = 0;
                            retailRate             = Convert.ToDecimal(el.Text);
                            er.ItemInfo.RetailRate = retailRate;
                        }
                        else if (bindingPath == "ItemInfo.Qty")
                        {
                            decimal qty = 0;
                            qty             = Convert.ToDecimal(el.Text);
                            er.ItemInfo.Qty = qty;
                        }
                        else if (bindingPath == "ItemInfo.DiscountRate")
                        {
                            decimal discountRate = 0;
                            discountRate             = Convert.ToDecimal(el.Text);
                            er.ItemInfo.DiscountRate = discountRate;
                        }
                        if (er.ItemInfo.DiscountRate > 0)
                        {
                            er.ItemInfo.Amount = er.ItemInfo.DiscountRate * er.ItemInfo.Qty;
                        }
                        else
                        {
                            er.ItemInfo.Amount = er.ItemInfo.RetailRate * er.ItemInfo.Qty;
                        }

                        SetTotalAmount();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
 private void deleteButton_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         if (this.datagridProduct.Items.Count > 0)
         {
             SalesItemBind itemBindInfo = this.datagridProduct.SelectedValue as SalesItemBind;
             itemList.RemoveAt(this.datagridProduct.SelectedIndex);
             SalesItemInfo productInfoExist = itemInfoList.SingleOrDefault(i => i.ProductID == itemBindInfo.ItemInfo.ProductID);
             itemInfoList.Remove(productInfoExist);
             SetTotalAmount();
             datagridProduct.Items.Refresh();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message.ToString());
     }
 }
        private void Grid_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (autoProductName.SelectedItem != null && txtQty.Text.Length > 0 && comboRetailRate.Text != null && comboUoM.SelectedValue != null)
                {
                    ProductInfo productInfo = null;

                    if (autoProductName.SelectedItem != null)
                    {
                        productInfo = (ProductInfo)autoProductName.SelectedItem;
                    }

                    int           itemNum          = 0;
                    SalesItemInfo productInfoExist = null;
                    if (itemInfoList != null && itemInfoList.Count > 0)
                    {
                        itemNum          = _invoiceInfo.SalesItemList.Length + 1;
                        productInfoExist = _invoiceInfo.SalesItemList.ToList().SingleOrDefault(i => i.ProductID == productInfo.ProductCode);
                    }
                    else
                    {
                        itemNum = 1;
                    }

                    if (productInfoExist != null)
                    {
                        MessageBox.Show("Product already in the list. If you want to change qty please update in the list it self");
                        this.autoProductName.Focus();
                        comboRetailRate.SelectedItem = null;
                        autoProductName.SelectedItem = null;
                        txtDiscount.Text             = "";
                        txtQty.Text = "";
                    }
                    else
                    {
                        if (productInfo != null)
                        {
                            SalesItemBind itemBindInfo = new SalesItemBind();
                            itemBindInfo.ItemNum            = itemNum;
                            itemBindInfo.ItemInfo.ProductID = productInfo.ProductCode;
                            decimal discountRate = 0;
                            decimal.TryParse(txtDiscount.Text, out discountRate);
                            itemBindInfo.DisplayProductName    = productInfo.ProductDescription + " - " + productInfo.VendorInfo.SupplierName;
                            itemBindInfo.ItemInfo.DiscountRate = discountRate;
                            decimal qty = 0;
                            decimal.TryParse(txtQty.Text, out qty);
                            itemBindInfo.ItemInfo.Qty = qty;
                            decimal retailRate = 0;

                            retailRate = Convert.ToDecimal(comboRetailRate.Text);

                            itemBindInfo.ItemInfo.RetailRate = retailRate;
                            itemBindInfo.ItemInfo.Unit       = comboUoM.SelectedValue.ToString();

                            if (discountRate > 0)
                            {
                                itemBindInfo.ItemInfo.Amount = qty * discountRate;
                            }
                            else
                            {
                                itemBindInfo.ItemInfo.Amount = qty * retailRate;
                            }


                            itemInfoList.Add(itemBindInfo.ItemInfo);
                            itemList.Add(itemBindInfo);
                            _invoiceInfo.SalesItemList  = itemInfoList.ToArray();
                            datagridProduct.ItemsSource = null;
                            datagridProduct.ItemsSource = itemList;
                            SetTotalAmount();
                        }

                        this.autoProductName.Focus();
                        comboRetailRate.SelectedItem = null;
                        autoProductName.SelectedItem = null;
                        txtDiscount.Text             = "";
                        txtQty.Text = "";
                    }
                }
            }
        }