Exemple #1
0
        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);
        }
Exemple #2
0
        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");
        }
Exemple #3
0
        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)");
        }