コード例 #1
0
ファイル: PurchaseHandler.cs プロジェクト: grydtech/goldline
        /// <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();
            }
        }
コード例 #2
0
ファイル: PurchaseHandler.cs プロジェクト: grydtech/goldline
        /// <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();
            }
        }
コード例 #3
0
ファイル: PurchaseHandler.cs プロジェクト: grydtech/goldline
        /// <summary>
        ///     Load purchaseItems of a purchase
        /// </summary>
        /// <param name="purchase"></param>
        public void LoadPurchaseItems(Purchase purchase)
        {
            if (purchase.Id == null)
            {
                throw new ArgumentNullException(nameof(purchase.Id), "Purchase Id is null");
            }

            var productHandler = new ProductHandler();

            using (var connection = Connector.GetConnection())
            {
                var purchaseItems = new PurchaseItemDal(connection).Search(purchase.Id.Value)?.ToList();
                if (purchaseItems == null)
                {
                    return;
                }
                foreach (var purchaseItem in purchaseItems)
                {
                    purchaseItem.ItemName = productHandler.GetItems(purchaseItem.ItemId).SingleOrDefault()?.Name;
                }
                purchase.PurchaseItems = purchaseItems;
            }
        }