private static void DecreaseSalesReturnTransactionLineItemSoldOrReturnedInDatabaseContext(ERPContext context, SalesReturnTransactionLine salesReturnTransactionLine) { var purchases = context.PurchaseTransactionLines .Where(e => e.ItemID.Equals(salesReturnTransactionLine.Item.ID) && e.SoldOrReturned > 0) .OrderByDescending(transaction => transaction.PurchaseTransactionID) .ThenByDescending(transaction => transaction.Quantity - transaction.SoldOrReturned) .ThenByDescending(transaction => transaction.PurchasePrice) .ThenByDescending(transaction => transaction.Discount) .ThenByDescending(transaction => transaction.WarehouseID); var tracker = salesReturnTransactionLine.Quantity; foreach (var purchase in purchases) { if (purchase.SoldOrReturned >= tracker) { purchase.SoldOrReturned -= tracker; break; } if (purchase.SoldOrReturned < tracker) { tracker -= purchase.SoldOrReturned; purchase.SoldOrReturned = 0; } } context.SaveChanges(); }
public static decimal GetSalesReturnTransactionLineCOGS(SalesReturnTransactionLine salesReturnTransactionLine) { decimal amount = 0; using (var context = new ERPContext()) { var purchases = context.PurchaseTransactionLines .Include("PurchaseTransaction") .Where( line => line.ItemID.Equals(salesReturnTransactionLine.Item.ID) && line.SoldOrReturned > 0) .OrderByDescending(e => e.PurchaseTransactionID) .ThenByDescending(transaction => transaction.Quantity - transaction.SoldOrReturned) .ThenByDescending(transaction => transaction.PurchasePrice) .ThenByDescending(transaction => transaction.Discount) .ThenByDescending(transaction => transaction.WarehouseID); var tracker = salesReturnTransactionLine.Quantity; foreach (var purchase in purchases) { var purchaseLineTotal = purchase.PurchasePrice - purchase.Discount; if (purchase.SoldOrReturned >= tracker) { if (purchaseLineTotal == 0) { break; } var fractionOfTransactionDiscount = tracker * purchaseLineTotal / purchase.PurchaseTransaction.GrossTotal * purchase.PurchaseTransaction.Discount; var fractionOfTransactionTax = tracker * purchaseLineTotal / purchase.PurchaseTransaction.GrossTotal * purchase.PurchaseTransaction.Tax; amount += tracker * purchaseLineTotal - fractionOfTransactionDiscount + fractionOfTransactionTax; break; } if (purchase.SoldOrReturned < tracker) { tracker -= purchase.SoldOrReturned; if (purchaseLineTotal == 0) { continue; } var fractionOfTransactionDiscount = purchase.SoldOrReturned * purchaseLineTotal / purchase.PurchaseTransaction.GrossTotal * purchase.PurchaseTransaction.Discount; var fractionOfTransactionTax = purchase.SoldOrReturned * purchaseLineTotal / purchase.PurchaseTransaction.GrossTotal * purchase.PurchaseTransaction.Tax; amount += purchase.SoldOrReturned * purchaseLineTotal - fractionOfTransactionDiscount + fractionOfTransactionTax; } } } return(amount); }
private static void AddSalesReturnTransactionLineToDatabaseContext(ERPContext context, SalesReturnTransactionLine salesReturnTransactionLine) { var item = context.Inventory.First(e => e.ID.Equals(salesReturnTransactionLine.Item.ID)); var warehouse = context.Warehouses.First(e => e.ID.Equals(salesReturnTransactionLine.Warehouse.ID)); salesReturnTransactionLine.Item = item; salesReturnTransactionLine.Warehouse = warehouse; context.SalesReturnTransactionLines.Add(salesReturnTransactionLine); }
public static decimal GetSalesReturnTransactionLineCOGS(SalesReturnTransactionLine salesReturnTransactionLine) { decimal amount = 0; using (var context = new ERPContext()) { var purchases = context.PurchaseTransactionLines .Include("PurchaseTransaction") .Where( line => line.ItemID.Equals(salesReturnTransactionLine.Item.ID) && line.SoldOrReturned > 0) .OrderByDescending(e => e.PurchaseTransactionID) .ThenByDescending(transaction => transaction.Quantity - transaction.SoldOrReturned) .ThenByDescending(transaction => transaction.PurchasePrice) .ThenByDescending(transaction => transaction.Discount) .ThenByDescending(transaction => transaction.WarehouseID); var tracker = salesReturnTransactionLine.Quantity; foreach (var purchase in purchases) { var purchaseLineTotal = purchase.PurchasePrice - purchase.Discount; if (purchase.SoldOrReturned >= tracker) { if (purchaseLineTotal == 0) break; var fractionOfTransactionDiscount = tracker*purchaseLineTotal/ purchase.PurchaseTransaction.GrossTotal* purchase.PurchaseTransaction.Discount; var fractionOfTransactionTax = tracker*purchaseLineTotal/purchase.PurchaseTransaction.GrossTotal* purchase.PurchaseTransaction.Tax; amount += tracker*purchaseLineTotal - fractionOfTransactionDiscount + fractionOfTransactionTax; break; } if (purchase.SoldOrReturned < tracker) { tracker -= purchase.SoldOrReturned; if (purchaseLineTotal == 0) continue; var fractionOfTransactionDiscount = purchase.SoldOrReturned*purchaseLineTotal/ purchase.PurchaseTransaction.GrossTotal* purchase.PurchaseTransaction.Discount; var fractionOfTransactionTax = purchase.SoldOrReturned*purchaseLineTotal/ purchase.PurchaseTransaction.GrossTotal* purchase.PurchaseTransaction.Tax; amount += purchase.SoldOrReturned*purchaseLineTotal - fractionOfTransactionDiscount + fractionOfTransactionTax; } } } return amount; }
private SalesReturnTransactionLineVM MakeNewEntrySalesReturnTransactionLine() { var salesReturnNewEntryQuantity = _salesReturnNewEntryQuantity; var salesReturnTransactionLine = new SalesReturnTransactionLine { SalesReturnTransaction = _parentVM.Model, Item = _parentVM.SelectedSalesTransactionLine.Item, Warehouse = _parentVM.SelectedSalesTransactionLine.Warehouse, SalesPrice = _parentVM.SelectedSalesTransactionLine.SalesPrice, Discount = _parentVM.SelectedSalesTransactionLine.Discount, ReturnPrice = _salesReturnNewEntryPrice, Quantity = salesReturnNewEntryQuantity, Total = salesReturnNewEntryQuantity * _salesReturnNewEntryPrice }; return(new SalesReturnTransactionLineVM { Model = salesReturnTransactionLine }); }
private static void InceaseSalesReturnTransactionLineItemStockInDatabaseContext(ERPContext context, SalesReturnTransactionLine salesReturnTransactionLine) { var stockFromDatabase = context.Stocks .SingleOrDefault( stock => stock.Item.ID.Equals(salesReturnTransactionLine.Item.ID) && stock.Warehouse.ID.Equals(salesReturnTransactionLine.Warehouse.ID)); if (stockFromDatabase != null) { stockFromDatabase.Pieces += salesReturnTransactionLine.Quantity; } else { var s = new Stock { Item = salesReturnTransactionLine.Item, Warehouse = salesReturnTransactionLine.Warehouse, Pieces = salesReturnTransactionLine.Quantity }; context.Stocks.Add(s); } }
private static void InceaseSalesReturnTransactionLineItemStockInDatabaseContext(ERPContext context, SalesReturnTransactionLine salesReturnTransactionLine) { var stockFromDatabase = context.Stocks .SingleOrDefault( stock => stock.Item.ID.Equals(salesReturnTransactionLine.Item.ID) && stock.Warehouse.ID.Equals(salesReturnTransactionLine.Warehouse.ID)); if (stockFromDatabase != null) stockFromDatabase.Pieces += salesReturnTransactionLine.Quantity; else { var s = new Stock { Item = salesReturnTransactionLine.Item, Warehouse = salesReturnTransactionLine.Warehouse, Pieces = salesReturnTransactionLine.Quantity }; context.Stocks.Add(s); } }
private SalesReturnTransactionLineVM MakeNewEntrySalesReturnTransactionLine() { var salesReturnNewEntryQuantity = _salesReturnNewEntryQuantity; var salesReturnTransactionLine = new SalesReturnTransactionLine { SalesReturnTransaction = _parentVM.Model, Item = _parentVM.SelectedSalesTransactionLine.Item, Warehouse = _parentVM.SelectedSalesTransactionLine.Warehouse, SalesPrice = _parentVM.SelectedSalesTransactionLine.SalesPrice, Discount = _parentVM.SelectedSalesTransactionLine.Discount, ReturnPrice = _salesReturnNewEntryPrice, Quantity = salesReturnNewEntryQuantity, Total = salesReturnNewEntryQuantity*_salesReturnNewEntryPrice }; return new SalesReturnTransactionLineVM {Model = salesReturnTransactionLine}; }