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();
        }
Exemplo n.º 2
0
        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);
 }
        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;
        }
Exemplo n.º 6
0
        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 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();
        }
 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);
     }
 }
Exemplo n.º 10
0
 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};
 }