/// <summary> /// определяет какие записи по остаткам будем удалять и какую запись обновлять, /// если количество списания больше чем есть для одной записи /// </summary> /// <param name="quantity"></param> /// <param name="update"></param> /// <returns></returns> private IEnumerable <StorageRemainder> SelectDataForUpdate(decimal quantity, ref StorageRemainder update) { var deleteList = new List <StorageRemainder>(); if (update.Quantity < quantity && update.Quantity > 0) { var newQquantity = quantity - update.Quantity; deleteList.Add(update); var updateItem = update; var remainders = Repository.StorageRemainders .Where(w => w.StorageId == updateItem.StorageId && w.ProductId == updateItem.ProductId).ToList(); foreach (var remains in remainders) { if (remains.Quantity < newQquantity && remains.Quantity > 0) { newQquantity -= remains.Quantity; deleteList.Add(remains); } else if (remains.Quantity <= 0) { deleteList.Add(remains); } else { remains.Quantity -= newQquantity; update = remains; return(deleteList); } } } update.Quantity -= quantity; return(deleteList); }
public StorageRemainder AddStorageRemainder(StorageRemainder item) { try { Repository.StorageRemainders.Add(item); Repository.SaveChanges(); } catch (Exception ex) { MessageBox.Show(ex.Message); } return(item); }