Я хочу управлять уровнем запаса (чтобы уменьшить доступность количества продукта) в базе данных после совершения покупок. и предупредить пользователя, когда количество меньше 2. или иметь поле ввода только для чтения, чтобы показать количество, доступное для каждого продукта. Мой Datacontext включает продукты, продажи, клиентов, категории и SalesDetails
В saleButton я добавляю каждый продукт в список, затем умножаю сумму на количество и цену, затем получаю сумму цены продукта, добавленной в список. у которого есть идентификатор для каждого списка покупок
Затем в кнопке отправки продаж я хочу, чтобы она обработала платеж, захватила список и сохранила в БД: , затем вычтите количество каждого товара из запаса. В этом проблема. Я пытаюсь получить уровень запасов и общий продукт, используя LINQ, но я получаю ошибки. Как изменить уровень запасов после обработки платежа?
Спасибо
Это «добавить товар» в список товаров клиента
private void SalesButton_Click(object sender, RoutedEventArgs e)
{
SaleId += 1;
var newDate = date.ToString("F");
if (AddSalesProductNameComboBox.Text != "" && AddSalesCustomerNameComboBox.Text != "" &&
ProductSalesPrice.Text != "" && ProductQuantityBought.Text != "")
{
var sale = new Sale
{
SalesID = SaleId,
ProductName = AddSalesProductNameComboBox.Text,
CustomerName = AddSalesCustomerNameComboBox.Text,
ProductPrice = Convert.ToDecimal(ProductSalesPrice.Text),
QuantityPurchased = Convert.ToInt32(ProductQuantityBought.Text),
Date = DateTime.Parse(newDate),
Total = Convert.ToDecimal(ProductSalesPrice.Text) * Convert.ToInt32(ProductQuantityBought.Text)
};
posManager.AddSales(sale);
var NewAmount = posManager.Sales.Sum(c => c.Total);
AmountDueDisplay.Text = NewAmount.ToString();
}
}
Это отправка продаж в БД и обработка уровня запаса
private void SubmitSalesButton_Click(object sender, RoutedEventArgs e)
{
decimal Balance = 0;
//Check if inputs are empty
if (AmountPaidInput.Text != "" && AmountDueDisplay.Text != "")
{
//Calculating the Amount due and amouunt paid
decimal AmtDue = Convert.ToDecimal(AmountDueDisplay.Text);
decimal AmtPaid = Convert.ToDecimal(AmountPaidInput.Text);
DisplayBalance.Text = (AmtDue - AmtPaid).ToString();
}
//pass the calculated balance to the balance variable
Balance = Convert.ToDecimal(DisplayBalance.Text);
//SaleDetailsID += 1;
var newSalesDate = date.ToString("F");
var salesDetails = new SalesDetail
{
SalesDetailsID = SaleDetailsID,
SalesID = SaleId,
SalesDetailsCustomerName = AddSalesCustomerNameComboBox.Text,
SalesProductName = AddSalesProductNameComboBox.Text,
AmountPaid = Convert.ToDecimal(AmountPaidInput.Text),
Balance = Balance,
Total = TotalQtyPurchased,
SalesDetailsDate = Convert.ToDateTime(newSalesDate),
//QuantityPuchased = Convert.ToInt32(ProductQuantityBought.Text)
//QuantityPuchased = quan
//SalesDetailsDate =
};
posDBcontext.GetSalesDetails.Add(salesDetails);
posDBcontext.SaveChanges();
var q = SubmitSalesButton.Content as Product;
var s = posDBcontext.Sales.Where(a => a.QuantityPurchased == q.QuantityAvailableInStock);
AmountPaidInput.Clear();
AmountDueDisplay.Clear();
SalesDatagrid.ItemsSource = null;
SalesDatagrid.Items.Clear();
//var s = posDBContext.GetSalesDetails.Where(c => c.SalesID == c.SalesID);
//var DetailSales = posManager.Sales.Where(c=> c.)
//posManager.CreateSales(s);
//TotalQtyPurchased = posDBContext.Sales.Sum(c => c.QuantityPurchased);
//posDBContext.Products.
}
Я пытался сделать это
var TotalQtyBought = posDBcontext.Sales.Where(c => c.Total == c.Total);
var StockLevel = posDBcontext.Products.Where(c => c.ProductPrice == c.ProductPrice);
foreach (var item in StockLevel) { var newStock = item - TotalQtyBought; }
Я получил эту ошибку
But I got this error cannot apply operands to type Product and iQueryable<sale> ```