public void LinkTranToStock(ITransaction TransactionObject, skStock StockOBJ, int UserID)
        {
            dtStock       StockObj    = DB.dtStocks.Single(x => x.sID == StockOBJ.Stockid);
            dtStockDetail StockDetais = DB.dtStockDetails.Single(x => x.StockID == StockOBJ.Stockid);

            switch (TransactionObject.TransactionType)
            {
            case TransactionType.Sale:
                StockDetais.SaleValue = StockOBJ.SaleValue;
                dtSale SaleObj = DB.dtSales.Single(x => x.tID == TransactionObject.ID);
                SaleObj.SoldValue += StockDetais.SaleValue;
                StockObj.SaleID    = TransactionObject.ID;
                CreateNewStockStatus(StockOBJ.Stockid, "Linked To sale " + SaleObj.tID, UserID, Convert.ToDecimal(StockOBJ.SaleValue));
                break;

            case TransactionType.Purchase:
                StockDetais.PurchaseValue = StockOBJ.purchasedvalue;
                dtPurchese PurchaseObj = DB.dtPurcheses.Single(x => x.pID == TransactionObject.ID);
                PurchaseObj.PurchesedValue += StockDetais.PurchaseValue;
                StockObj.PurchaseID         = TransactionObject.ID;
                CreateNewStockStatus(StockOBJ.Stockid, "Linked To Purchase " + PurchaseObj.pID, UserID, Convert.ToDecimal(StockOBJ.purchasedvalue));
                break;
            }

            DB.SubmitChanges();
        }
        public void UpdateSale(skSales SaleObject)
        {
            dtSale SaleToUpdate = DB.dtSales.Single(x => x.tID == SaleObject.ID);

            if (SaleToUpdate != null)
            {
                SaleToUpdate.Description = SaleObject.Description;
                SaleToUpdate.Title       = SaleObject.Title;
                SaleToUpdate.SoldDate    = SaleObject.TransactionTime;
                SaleToUpdate.Updated     = DateTime.Now;

                DB.SubmitChanges();
            }
            else
            {
                throw new Exception("Sale record doesnt exist within the Database.");
            }
        }
        public void AddNewSale(skSales TransactionObject, int UserID)
        {
            dtSale newtransaction = new dtSale
            {
                SoldValue           = TransactionObject.Amount,
                PaypayFees          = TransactionObject.PayPalFees,
                PandP               = TransactionObject.Postage,
                SaleMethod          = TransactionObject.SaleMethod,
                SoldDate            = TransactionObject.SaleDate,
                SoldBy              = UserID,
                PayPalTransactionID = TransactionObject.PayPalTransactionID,
                Updated             = DateTime.Now,
                Created             = DateTime.Now,
                Title               = TransactionObject.Title,
                Description         = TransactionObject.Description,
                PersonID            = TransactionObject.PersonObj.pID
            };

            DB.dtSales.InsertOnSubmit(newtransaction);
            DB.SubmitChanges();

            int     tid     = MostRecentsalesID();
            decimal pvalue  = Math.Abs(Convert.ToDecimal(TransactionObject.PayPalFees)) * (-1);
            decimal ppvalue = Math.Abs(Convert.ToDecimal(TransactionObject.Postage)) * (-1);

            dtTransactionLedger newsaleledger = new dtTransactionLedger
            {
                SaleID              = tid,
                PurchaseID          = null,
                TotelAmount         = Convert.ToDecimal(TransactionObject.Amount),
                TransactionType     = "Item Sale",
                TransactionDateTime = Convert.ToDateTime(TransactionObject.SaleDate)
            };

            dtTransactionLedger newspaypal = new dtTransactionLedger

            {
                SaleID              = tid,
                PurchaseID          = null,
                TotelAmount         = pvalue,
                TransactionType     = "PayPal Fees",
                TransactionDateTime = Convert.ToDateTime(TransactionObject.SaleDate)
            };

            dtTransactionLedger newepostage = new dtTransactionLedger
            {
                SaleID              = tid,
                PurchaseID          = null,
                TotelAmount         = ppvalue,
                TransactionType     = "Sale Postage",
                TransactionDateTime = Convert.ToDateTime(TransactionObject.SaleDate)
            };

            foreach (skStock s in TransactionObject.StockList)
            {
                dtStockHistory newstatus = new dtStockHistory
                {
                    StoockID = Convert.ToInt32(s.Stockid),
                    Status   = "Stock Sold",
                    Value    = 0,
                    UserID   = UserID,
                    Created  = DateTime.Now,
                    StatusID = 1
                };
                DB.dtStockHistories.InsertOnSubmit(newstatus);

                dtStockDetail SD = DB.dtStockDetails.Single(x => x.StockID == s.Stockid);
                SD.SaleValue = s.SaleValue;
            }

            List <long> StockIds = new List <long>();

            foreach (skStock s in TransactionObject.StockList)
            {
                StockIds.Add(s.Stockid);
            }

            var setsold = from ST in DB.dtStocks
                          where StockIds.Contains(ST.sID)
                          select ST;

            foreach (dtStock s in setsold)
            {
                s.Sold   = true;
                s.SaleID = tid;
            }

            DB.dtTransactionLedgers.InsertOnSubmit(newepostage);
            DB.dtTransactionLedgers.InsertOnSubmit(newspaypal);
            DB.dtTransactionLedgers.InsertOnSubmit(newsaleledger);

            DB.SubmitChanges();
        }