1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.lethe.data.analysis.values;
18
19 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusMoney;
20 import io.github.tonywasher.joceanus.moneywise.lethe.data.analysis.base.MoneyWiseAnalysisValues;
21
22 import java.util.Currency;
23
24
25
26
27 public final class MoneyWiseAnalysisPayeeValues
28 extends MoneyWiseAnalysisValues<MoneyWiseAnalysisPayeeValues, MoneyWiseAnalysisPayeeAttr> {
29
30
31
32
33
34 public MoneyWiseAnalysisPayeeValues(final Currency pCurrency) {
35
36 super(MoneyWiseAnalysisPayeeAttr.class);
37
38
39 super.setValue(MoneyWiseAnalysisPayeeAttr.INCOME, new OceanusMoney(pCurrency));
40 super.setValue(MoneyWiseAnalysisPayeeAttr.EXPENSE, new OceanusMoney(pCurrency));
41 }
42
43
44
45
46
47
48
49 public MoneyWiseAnalysisPayeeValues(final MoneyWiseAnalysisPayeeValues pSource,
50 final boolean pCountersOnly) {
51
52 super(pSource, pCountersOnly);
53 }
54
55 @Override
56 protected MoneyWiseAnalysisPayeeValues getCounterSnapShot() {
57 return new MoneyWiseAnalysisPayeeValues(this, true);
58 }
59
60 @Override
61 protected MoneyWiseAnalysisPayeeValues getFullSnapShot() {
62 return new MoneyWiseAnalysisPayeeValues(this, false);
63 }
64
65 @Override
66 public void adjustToBaseValues(final MoneyWiseAnalysisPayeeValues pBase) {
67
68 adjustMoneyToBase(pBase, MoneyWiseAnalysisPayeeAttr.INCOME);
69 adjustMoneyToBase(pBase, MoneyWiseAnalysisPayeeAttr.EXPENSE);
70 calculateDelta();
71 }
72
73 @Override
74 public void resetBaseValues() {
75
76 OceanusMoney myValue = getMoneyValue(MoneyWiseAnalysisPayeeAttr.INCOME);
77 myValue = new OceanusMoney(myValue);
78 myValue.setZero();
79
80
81 super.setValue(MoneyWiseAnalysisPayeeAttr.INCOME, myValue);
82 super.setValue(MoneyWiseAnalysisPayeeAttr.EXPENSE, new OceanusMoney(myValue));
83 super.setValue(MoneyWiseAnalysisPayeeAttr.PROFIT, new OceanusMoney(myValue));
84 }
85
86
87
88
89 public void calculateDelta() {
90
91 OceanusMoney myDelta = getMoneyValue(MoneyWiseAnalysisPayeeAttr.INCOME);
92 myDelta = new OceanusMoney(myDelta);
93
94
95 final OceanusMoney myExpense = getMoneyValue(MoneyWiseAnalysisPayeeAttr.EXPENSE);
96 myDelta.subtractAmount(myExpense);
97
98
99 super.setValue(MoneyWiseAnalysisPayeeAttr.PROFIT, myDelta);
100 }
101
102
103
104
105
106
107 public boolean isActive() {
108 final OceanusMoney myIncome = getMoneyValue(MoneyWiseAnalysisPayeeAttr.INCOME);
109 final OceanusMoney myExpense = getMoneyValue(MoneyWiseAnalysisPayeeAttr.EXPENSE);
110 return myIncome.isNonZero() || myExpense.isNonZero();
111 }
112 }
113