private static PurchaseTransaction MakeNewstockAdjustmentPurchaseTransaction(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction)
 {
     return new PurchaseTransaction
     {
         PurchaseID = stockAdjustmentTransaction.StockAdjustmentTransactionID,
         Supplier = context.Suppliers.Single(e => e.Name.Equals("-")),
         Date = UtilityMethods.GetCurrentDate().Date,
         DueDate = UtilityMethods.GetCurrentDate().Date,
         Discount = 0,
         GrossTotal = 0,
         Total = 0,
         Paid = 0,
         User = stockAdjustmentTransaction.User,
         PurchaseTransactionLines = new ObservableCollection<PurchaseTransactionLine>()
     };
 }
        public static void AddStockAdjustmentTransactionToDatabase(StockAdjustmentTransaction stockAdjustmentTransaction)
        {
            using (var ts = new TransactionScope())
            {
                var context = new ERPContext();
                var stockAdjustmentPurchaseTransaction = MakeNewstockAdjustmentPurchaseTransaction(context, stockAdjustmentTransaction);

                decimal totalCOGSAdjustment = 0;

                var isThereDecreaseAdjustmentLine = false;
                var isThereIncreaseAdjustmentLine = false;

                foreach (var line in stockAdjustmentTransaction.AdjustStockTransactionLines)
                {
                    AttachLineToDatabaseContext(context, line);

                    if (line.Quantity < 0)
                    {
                        isThereDecreaseAdjustmentLine = true;
                        DecreaseStock(context, line.Warehouse, line.Item, line.Quantity);
                        totalCOGSAdjustment += CalculateCOGS(context, line.Item, -line.Quantity);
                        IncreaseSoldOrReturned(context, line.Item, -line.Quantity);
                    }

                    else
                    {
                        isThereIncreaseAdjustmentLine = true;
                        IncreaseStock(context, line.Warehouse, line.Item, line.Quantity);
                        AddLineToStockAdjustmentPurchaseTransaction(line, stockAdjustmentPurchaseTransaction);
                    }
                }

                if (isThereDecreaseAdjustmentLine)
                {
                    AddStockAdjustmentDecrementLedgerTransactionToDatabase(context, stockAdjustmentTransaction, totalCOGSAdjustment);
                }

                if (isThereIncreaseAdjustmentLine)
                {
                    context.PurchaseTransactions.Add(stockAdjustmentPurchaseTransaction);
                }

                AddStockAdjustmentTransactionToDatabaseContext(context, stockAdjustmentTransaction);
                context.SaveChanges();
                ts.Complete();
            }
        }
        public static void AddStockAdjustmentTransactionToDatabase(StockAdjustmentTransaction stockAdjustmentTransaction)
        {
            using (var ts = new TransactionScope())
            {
                var context = new ERPContext();
                var stockAdjustmentPurchaseTransaction = MakeNewstockAdjustmentPurchaseTransaction(context, stockAdjustmentTransaction);

                decimal totalCOGSAdjustment = 0;

                var isThereDecreaseAdjustmentLine = false;
                var isThereIncreaseAdjustmentLine = false;

                foreach (var line in stockAdjustmentTransaction.AdjustStockTransactionLines)
                {
                    AttachLineToDatabaseContext(context, line);

                    if (line.Quantity < 0)
                    {
                        isThereDecreaseAdjustmentLine = true;
                        DecreaseStock(context, line.Warehouse, line.Item, line.Quantity);
                        totalCOGSAdjustment += CalculateCOGS(context, line.Item, -line.Quantity);
                        IncreaseSoldOrReturned(context, line.Item, -line.Quantity);
                    }

                    else
                    {
                        isThereIncreaseAdjustmentLine = true;
                        IncreaseStock(context, line.Warehouse, line.Item, line.Quantity);
                        AddLineToStockAdjustmentPurchaseTransaction(line, stockAdjustmentPurchaseTransaction);
                    }
                }

                if (isThereDecreaseAdjustmentLine)
                    AddStockAdjustmentDecrementLedgerTransactionToDatabase(context, stockAdjustmentTransaction, totalCOGSAdjustment);

                if (isThereIncreaseAdjustmentLine)
                    context.PurchaseTransactions.Add(stockAdjustmentPurchaseTransaction);

                AddStockAdjustmentTransactionToDatabaseContext(context, stockAdjustmentTransaction);
                context.SaveChanges();
                ts.Complete();
            }
        }
Example #4
0
    private static void PerformAdjustStock(Warehouse toWarehouse)
    {
        int     quantity = 0;
        decimal price    = 0;

        Console.WriteLine("---- ADJUST STOCK ----");

        Stock stock = FindStockItem(toWarehouse);

        if (stock == null)
        {
            return;
        }

        quantity = ReadInteger($"Quantity of {stock.Name} to adjust: ");
        price    = ReadDecimal("Price: ");



        StockAdjustmentTransaction adj = new StockAdjustmentTransaction(stock, quantity, price);

        toWarehouse.ExecuteTransaction(adj);
        adj.PrintSummary();
    }
 private static PurchaseTransaction MakeNewstockAdjustmentPurchaseTransaction(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction)
 {
     return(new PurchaseTransaction
     {
         PurchaseID = stockAdjustmentTransaction.StockAdjustmentTransactionID,
         Supplier = context.Suppliers.Single(e => e.Name.Equals("-")),
         Date = UtilityMethods.GetCurrentDate().Date,
         DueDate = UtilityMethods.GetCurrentDate().Date,
         Discount = 0,
         GrossTotal = 0,
         Total = 0,
         Paid = 0,
         User = stockAdjustmentTransaction.User,
         PurchaseTransactionLines = new ObservableCollection <PurchaseTransactionLine>()
     });
 }
        private static void AddStockAdjustmentTransactionToDatabaseContext(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction)
        {
            var user = Application.Current.FindResource("CurrentUser") as User;

            stockAdjustmentTransaction.User = context.Users.Single(e => e.Username.Equals(user.Username));
            context.StockAdjustmentTransactions.Add(stockAdjustmentTransaction);
        }
        private static void AddStockAdjustmentDecrementLedgerTransactionToDatabase(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction, decimal totalCOGSAdjustment)
        {
            var ledgerTransaction = new LedgerTransaction();

            if (!LedgerTransactionHelper.AddTransactionToDatabase(context, ledgerTransaction, UtilityMethods.GetCurrentDate().Date,
                                                                  stockAdjustmentTransaction.StockAdjustmentTransactionID, "Stock Adjustment (Decrement)"))
            {
                return;
            }
            context.SaveChanges();
            LedgerTransactionHelper.AddTransactionLineToDatabase(context, ledgerTransaction, "Cost of Goods Sold", "Debit", totalCOGSAdjustment);
            LedgerTransactionHelper.AddTransactionLineToDatabase(context, ledgerTransaction, "Inventory", "Credit", totalCOGSAdjustment);
        }
 private static void AddStockAdjustmentTransactionToDatabaseContext(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction)
 {
     var user = Application.Current.FindResource("CurrentUser") as User;
     stockAdjustmentTransaction.User = context.Users.Single(e => e.Username.Equals(user.Username));
     context.StockAdjustmentTransactions.Add(stockAdjustmentTransaction);
 }
 private static void AddStockAdjustmentDecrementLedgerTransactionToDatabase(ERPContext context, StockAdjustmentTransaction stockAdjustmentTransaction, decimal totalCOGSAdjustment)
 {
     var ledgerTransaction = new LedgerTransaction();
     if (!LedgerTransactionHelper.AddTransactionToDatabase(context, ledgerTransaction, UtilityMethods.GetCurrentDate().Date,
         stockAdjustmentTransaction.StockAdjustmentTransactionID, "Stock Adjustment (Decrement)")) return;
     context.SaveChanges();
     LedgerTransactionHelper.AddTransactionLineToDatabase(context, ledgerTransaction, "Cost of Goods Sold", "Debit", totalCOGSAdjustment);
     LedgerTransactionHelper.AddTransactionLineToDatabase(context, ledgerTransaction, "Inventory", "Credit", totalCOGSAdjustment);
 }