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}