private async void ExecuteAddToBillAsync()
        {
            if (NewSupplyOfferCategory.CostTotalAfterDiscount == null || NewSupplyOfferCategory.Category == null)
            {
                return;
            }
            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "موافق",
                DialogMessageFontSize = 25,
                DialogTitleFontSize   = 30
            };

            if (_supplyOfferCategories.SingleOrDefault(s => s.CategoryID == _newSupplyOfferCategory.CategoryID) != null)
            {
                MessageDialogResult result = await _currentWindow.ShowMessageAsync("خطأ", "هذا الصنف موجود مسبقاً فى الطلبيه", MessageDialogStyle.Affirmative, mySettings);

                return;
            }
            _supplyOfferCategories.Add(_newSupplyOfferCategory);
            NewSupplyOfferCategory       = new SupplyOfferCategoryVM();
            NewSupplyOffer.Cost          = SupplyOfferCategories.Sum(s => s.CostTotal);
            NewSupplyOffer.CostAfterTax  = SupplyOfferCategories.Sum(s => s.CostTotalAfterTax);
            NewSupplyOffer.TotalDiscount = SupplyOfferCategories.Sum(s => s.DiscountValueTotal);
            OldCosts = new ObservableCollection <SupplyCategory>();
        }
 private async void ExecuteBrowseCategoriesAsync()
 {
     OldCosts = new ObservableCollection <SupplyCategory>();
     NewSupplyOfferCategory = new SupplyOfferCategoryVM();
     Key = "";
     Load();
     _categoriesDialog.DataContext = this;
     await _currentWindow.ShowMetroDialogAsync(_categoriesDialog);
 }
        private void ExecuteSave()
        {
            Mouse.OverrideCursor = Cursors.Wait;
            DateTime _dt = DateTime.Now;

            _supplyOfferServ.AddSupplyOffer(_newSupplyOffer);
            int _supplyOfferID = _supplyOfferServ.GetLastSupplyOfferID();

            foreach (var item in _supplyOfferCategories)
            {
                SupplyOfferCategory _supplyOfferCategory = new SupplyOfferCategory
                {
                    CategoryID             = item.CategoryID,
                    Cost                   = item.Cost,
                    CostAfterDiscount      = item.CostAfterDiscount,
                    CostAfterTax           = item.CostAfterTax,
                    CostTotal              = item.CostTotal,
                    CostTotalAfterDiscount = item.CostTotalAfterDiscount,
                    CostTotalAfterTax      = item.CostTotalAfterTax,
                    Discount               = item.Discount,
                    DiscountValue          = item.DiscountValue,
                    DiscountValueTotal     = item.DiscountValueTotal,
                    SupplyOfferID          = _supplyOfferID,
                    Qty           = item.Qty,
                    Tax           = item.Tax,
                    TaxValue      = item.TaxValue,
                    TaxValueTotal = item.TaxValueTotal
                };
                _supplyOfferCategoryServ.AddSupplyOfferCategory(_supplyOfferCategory);
            }
            DS ds = new DS();

            ds.Sale.Rows.Clear();
            int i = 0;

            foreach (var item in _supplyOfferCategories)
            {
                ds.Sale.Rows.Add();
                ds.Sale[i]["Client"]     = _selectedClient.Name;
                ds.Sale[i]["Serial"]     = i + 1;
                ds.Sale[i]["Category"]   = item.Category + " " + item.Company;
                ds.Sale[i]["Qty"]        = item.Qty;
                ds.Sale[i]["Price"]      = Math.Round(Convert.ToDecimal(item.CostAfterTax), 2);
                ds.Sale[i]["TotalPrice"] = Math.Round(Convert.ToDecimal(item.CostTotalAfterTax), 2);
                ds.Sale[i]["BillPrice"]  = Math.Round(Convert.ToDecimal(_newSupplyOffer.CostAfterTax), 2);
                i++;
            }
            ReportWindow      rpt            = new ReportWindow();
            SupplyOfferReport supplyOfferRPT = new SupplyOfferReport();

            supplyOfferRPT.SetDataSource(ds.Tables["Sale"]);
            rpt.crv.ViewerCore.ReportSource = supplyOfferRPT;
            Mouse.OverrideCursor            = null;
            _currentWindow.Hide();
            rpt.ShowDialog();

            NewSupplyOffer         = new SupplyOffer();
            NewSupplyOfferCategory = new SupplyOfferCategoryVM();
            SupplyOfferCategories  = new ObservableCollection <SupplyOfferCategoryVM>();
            NewSupplyOffer.Date    = DateTime.Now;
            OldCosts = new ObservableCollection <SupplyCategory>();
            _currentWindow.ShowDialog();
        }