main
 1using System.Collections.Generic;
 2using gorilla.utility;
 3
 4namespace solidware.financials.service.domain.accounting
 5{
 6    public class SummaryAccount : Account
 7    {
 8        static public SummaryAccount New(UnitOfMeasure unit_of_measure)
 9        {
10            return new SummaryAccount
11                   {
12                       unit_of_measure = unit_of_measure
13                   };
14        }
15
16        public void add(Account account)
17        {
18            accounts.Add(account);
19        }
20
21        public Quantity balance()
22        {
23            return balance(Calendar.today());
24        }
25
26        public Quantity balance(Date date)
27        {
28            return balance(DateRange.up_to(date));
29        }
30
31        public Quantity balance(Range<Date> period)
32        {
33            var result = new Quantity(0, unit_of_measure);
34            accounts.each(x => result = result.plus(x.balance(period)));
35            return result;
36        }
37
38        ICollection<Account> accounts = new HashSet<Account>();
39        UnitOfMeasure unit_of_measure;
40    }
41}