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(); } }
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 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); }