Beispiel #1
0
        /// <summary>
        ///     Updates a purchase
        /// </summary>
        /// <param name="purchase"></param>
        /// <param name="supplierId"></param>
        /// <param name="amount"></param>
        /// <param name="isSettled"></param>
        /// <param name="note"></param>
        /// <param name="purchaseItems"></param>
        public void UpdatePurchase(Purchase purchase, uint?supplierId = null, decimal?amount = null,
                                   bool?isSettled = null, string note = null, IEnumerable <PurchaseItem> purchaseItems = null)
        {
            using (var scope = new TransactionScope())
            {
                using (var connection = Connector.GetConnection())
                {
                    if (purchase.Id == null)
                    {
                        throw new ArgumentNullException(nameof(purchase.Id), "Purchase Id is null");
                    }

                    var purchaseDal = new PurchaseDal(connection);
                    purchaseDal.Update(purchase.Id.Value, supplierId, amount, isSettled, note);

                    var purchaseItemsList = purchaseItems?.ToList();
                    if (purchaseItemsList?.Any() == true)
                    {
                        var purchaseItemDal = new PurchaseItemDal(connection);
                        purchaseItemDal.Delete(purchase.Id.Value);
                        purchaseItemDal.InsertMultiple(purchase.Id.Value, purchaseItemsList);
                    }
                }
                scope.Complete();
            }
        }
Beispiel #2
0
        /// <summary>
        ///     Adds a new purchase
        /// </summary>
        /// <param name="purchase"></param>
        public void AddPurchase(Purchase purchase)
        {
            if (purchase.SupplierId == null)
            {
                throw new ArgumentNullException(nameof(purchase.SupplierId), "Purchase SupplierId is null");
            }
            using (var scope = new TransactionScope())
            {
                using (var connection = Connector.GetConnection())
                {
                    var purchaseDal = new PurchaseDal(connection);
                    var itemDal     = new ItemDal(connection);
                    purchaseDal.Insert(purchase.SupplierId.Value, purchase.Amount, purchase.Note, purchase.IsSettled);
                    purchase.Id = purchaseDal.GetLastInsertId();

                    if (purchase.Id == null)
                    {
                        throw new ArgumentNullException(nameof(purchase.Id),
                                                        "Purchase Id null after insert");
                    }

                    var purchaseItemDal = new PurchaseItemDal(connection);

                    // Insert purchase items
                    purchaseItemDal.InsertMultiple(purchase.Id.Value, purchase.PurchaseItems);

                    // Update inventory
                    foreach (var purchaseItem in purchase.PurchaseItems)
                    {
                        itemDal.Update(purchaseItem.ItemId, stockIncrement: (int)purchaseItem.Qty);
                    }
                }
                scope.Complete();
            }
        }
Beispiel #3
0
 /// <summary>
 ///     Deletes a purchase
 /// </summary>
 /// <param name="purchaseId"></param>
 public void DeletePurchase(uint purchaseId)
 {
     using (var scope = new TransactionScope())
     {
         using (var connection = Connector.GetConnection())
         {
             var purchaseDal = new PurchaseDal(connection);
             purchaseDal.Delete(purchaseId);
         }
         scope.Complete();
     }
 }
Beispiel #4
0
        /// <summary>
        ///     Update a set of purchases
        /// </summary>
        /// <param name="purchases"></param>
        /// <param name="isSettled"></param>
        public void UpdatePurchaseMultiple(IEnumerable <Purchase> purchases, bool isSettled)
        {
            var purchasesList = purchases.ToList();

            if (purchasesList.Any(p => p.Id == null))
            {
                throw new ArgumentNullException(nameof(purchasesList), "Some Purchases have null Id");
            }

            using (var scope = new TransactionScope())
            {
                using (var connection = Connector.GetConnection())
                {
                    var purchaseDal = new PurchaseDal(connection);
                    foreach (var purchase in purchasesList)
                    {
                        purchaseDal.Update(purchase.Id.GetValueOrDefault(), isSettled: isSettled);
                    }
                }
                scope.Complete();
            }
        }