public virtual void AddItem(IBook book, IAccount account, IAsset asset, decimal debit, decimal credit) { var entryItem = new EntryItem(); entryItem.Entry = this; entryItem.Book = book; entryItem.Account = account; entryItem.Asset = asset; entryItem.Debit = debit; entryItem.Credit = credit; this.Items.Add(entryItem); }
public static void Copy(this IEntry sourceEntry, IEntry destinationEntry, IAccountMap accountMap, bool closingOpeningEntryType = false) { // Performance.MarkStart("EntryHelper.Copy"); Validate(sourceEntry, accountMap); foreach (var accountMapItem in accountMap.Items) { if (accountMapItem.Account == null) { continue; } var items = sourceEntry.Items.Where(x => x.Book.Equals(accountMapItem.Book) && accountMapItem.AccountPredicate.Matches(x.Account)).ToList(); if (!items.Any()) { continue; } var entryItem = new EntryItem(); entryItem.Entry = destinationEntry; entryItem.Account = accountMapItem.Account; entryItem.Book = accountMapItem.Book; entryItem.Asset = items.Select(x => x.Asset).Distinct().Single(); entryItem.Debit = items.Sum(x => x.Debit); entryItem.Credit = items.Sum(x => x.Credit); if (entryItem.Debit != entryItem.Credit && entryItem.Debit != 0 && entryItem.Credit != 0 && closingOpeningEntryType) { var minValue = entryItem.Debit < entryItem.Credit ? entryItem.Debit : entryItem.Credit; entryItem.Debit -= minValue; entryItem.Credit -= minValue; } destinationEntry.Items.Add(entryItem); } // Performance.MarkEnd("EntryHelper.Copy"); }
public static void Copy(this IBalance sourceBalance, IEntry entry) { // Performance.MarkStart("BalanceHelper.Copy(entry)"); foreach (var balanceItem in sourceBalance.Items) { if (balanceItem.BalanceDebit == 0 && balanceItem.BalanceCredit == 0) { continue; } var item = new EntryItem(); item.Entry = entry; item.Book = sourceBalance.Book; item.Account = balanceItem.Account; item.Asset = balanceItem.Asset; item.Debit = balanceItem.BalanceDebit; item.Credit = balanceItem.BalanceCredit; entry.Items.Add(item); } // Performance.MarkEnd("BalanceHelper.Copy(entry)"); }