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