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