コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public StorageRemainder AddStorageRemainder(StorageRemainder item)
 {
     try
     {
         Repository.StorageRemainders.Add(item);
         Repository.SaveChanges();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
     return(item);
 }