public Ledger PostToLedger(TempLedger ledger)
 {
     Ledger LedgerLite = GetLedger(ledger.ItemID, ledger.UnitID, ledger.ManufacturerID, ledger.AccountID);
        LedgerLite.UnitCost = ledger.UnitCost;
        LedgerLite.Margin = ledger.Margin;
        LedgerLite.SellingPrice = ledger.SellingPrice;
        ledger.IsConfirmed = true;
        repository.Ledgers.Update(ledger);
        return LedgerLite;
 }
 public TempLedger GetTempLedger(int ItemID, int UnitID, int ManufacturerID, int MovingAverageGroupID)
 {
     IEnumerable<TempLedger> ledgers = repository.Ledgers.Find(l => l.ItemID == ItemID && l.UnitID == UnitID && l.ManufacturerID == ManufacturerID && l.AccountID == MovingAverageGroupID);
        TempLedger ledger = ledgers.FirstOrDefault();
        if (ledger == null)
        {
        ledger = new TempLedger() { ItemID = ItemID, UnitID = UnitID, ManufacturerID = ManufacturerID, AccountID = MovingAverageGroupID };
        repository.Ledgers.Insert(ledger);
        //Ledger = repository.LedgerLites.Single(l => l.ItemID == ItemID && l.UnitID == UnitID && l.ManufacturerID == ManufacturerID && l.AccountID == AccountID);
        }
        return ledger;
 }
 internal static bool ValidateLedger(TempLedger ledger,decimal UnitCost,decimal Margin,decimal SellingPrice)
 {
     if (ledger.UnitCost != UnitCost)
     {
         throw new Exception("The Average Cost you are Confirming is Different from the one that has been set,this usually happens when Quantity has changed since the moving Average has been Calculated,please return and recalculate moving average");
     }
     else if(ledger.Margin != Margin )
     {
        throw new Exception("The Margin you are Confirming is Different");
     }
     else if(ledger.SellingPrice != SellingPrice )
     {
         throw new Exception("The SellingPrice you are Confirming is Different");
     }
     return true;
 }