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}