diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/Messages.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/Messages.java index fbc152eab1..2b0d33fcdf 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/Messages.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/Messages.java @@ -401,6 +401,7 @@ public class Messages extends NLS public static String LabelUnknownVersion; public static String LabelUnnamedXml; public static String LabelUpdatesAvailable; + public static String LabelUseGrossDividends; public static String LabelValueInboundDelivery; public static String LabelValueOutboundDelivery; public static String LabelViewPieChart; diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages.properties b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages.properties index 0085357e1d..3a6fe31ed0 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages.properties +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages.properties @@ -789,6 +789,8 @@ LabelUnnamedXml = unnamed.xml LabelUpdatesAvailable = Updates Available +LabelUseGrossDividends = Use gross dividends + LabelValueInboundDelivery = Value of Inbound Delivery LabelValueOutboundDelivery = Value of Outbound Delivery diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages_de.properties b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages_de.properties index b6b8eee7d2..772a782c69 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages_de.properties +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages_de.properties @@ -789,6 +789,8 @@ LabelUnnamedXml = ohnenamen.xml LabelUpdatesAvailable = Eine neue Version ist verf\u00FCgbar +LabelUseGrossDividends = Bruttodividende verwenden + LabelValueInboundDelivery = Wert der Einlieferung LabelValueOutboundDelivery = Wert der Auslieferung diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsView.java index d3055e6d2a..0638b13946 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsView.java @@ -5,6 +5,7 @@ import javax.annotation.PostConstruct; import javax.inject.Inject; +import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; @@ -53,7 +54,7 @@ public void setupModel() model.updateWith(year); model.addUpdateListener(() -> preferences.setValue(KEY_YEAR, model.getStartYear())); } - + @Override public void notifyModelUpdated() { @@ -85,6 +86,25 @@ public void menuAboutToShow(IMenuManager manager) } } }; + + new AbstractDropDown(toolBar, Messages.MenuConfigureChart, Images.CONFIG.image(), SWT.NONE) + { + @Override + public void menuAboutToShow(IMenuManager manager) + { + Action action = new Action(Messages.LabelUseGrossDividends) + { + @Override + public void run() + { + model.setUseGrossValue(!model.usesGrossValue()); + model.recalculate(); + } + }; + action.setChecked(model.usesGrossValue()); + manager.add(action); + } + }; } @Override diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsViewModel.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsViewModel.java index 1c2c4cace7..6917734e5d 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsViewModel.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/DividendsViewModel.java @@ -15,6 +15,7 @@ import name.abuchen.portfolio.model.Transaction; import name.abuchen.portfolio.model.TransactionPair; import name.abuchen.portfolio.money.CurrencyConverter; +import name.abuchen.portfolio.money.Money; import name.abuchen.portfolio.snapshot.ReportingPeriod; public class DividendsViewModel @@ -64,6 +65,8 @@ public long getSum() private Line sum; private List> transactions; + private boolean useGrossValue = true; + public DividendsViewModel(CurrencyConverter converter, Client client) { this.converter = converter; @@ -90,6 +93,16 @@ public Line getSum() return sum; } + public boolean usesGrossValue() + { + return useGrossValue; + } + + public void setUseGrossValue(boolean useGrossValue) + { + this.useGrossValue = useGrossValue; + } + /** * Returns all lines including the sum line */ @@ -145,9 +158,10 @@ private void calculate() if (!predicate.test(t)) continue; - transactions.add(new TransactionPair(account, t)); + transactions.add(new TransactionPair<>(account, t)); - long value = converter.at(t.getDate()).apply(t.getMonetaryAmount()).getAmount(); + Money dividendValue = useGrossValue ? t.getGrossValue() : t.getMonetaryAmount(); + long value = dividendValue.with(converter.at(t.getDate())).getAmount(); int index = (t.getDate().getYear() - startYear) * 12 + t.getDate().getMonthValue() - 1; Line line = vehicle2line.computeIfAbsent(t.getSecurity(), s -> new Line(s, noOfmonths)); diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/TransactionsTab.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/TransactionsTab.java index a5b412953c..9437562bc4 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/TransactionsTab.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/dividends/TransactionsTab.java @@ -16,7 +16,9 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import name.abuchen.portfolio.model.AccountTransaction; import name.abuchen.portfolio.model.Client; +import name.abuchen.portfolio.model.Transaction.Unit; import name.abuchen.portfolio.model.TransactionPair; import name.abuchen.portfolio.money.Values; import name.abuchen.portfolio.ui.Images; @@ -68,8 +70,8 @@ public Control createControl(Composite parent) tableViewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.MULTI); - ShowHideColumnHelper support = new ShowHideColumnHelper(TransactionsTab.class.getSimpleName(), preferences, - tableViewer, layout); + ShowHideColumnHelper support = new ShowHideColumnHelper(TransactionsTab.class.getSimpleName() + "@v2", //$NON-NLS-1$ + preferences, tableViewer, layout); addColumns(support); support.createColumns(); @@ -124,6 +126,34 @@ public Long getValue(Object element) ColumnViewerSorter.create(e -> ((TransactionPair) e).getTransaction().getShares()).attachTo(column); support.addColumn(column); + column = new Column(Messages.ColumnGrossValue, SWT.RIGHT, 80); + column.setLabelProvider(new ColumnLabelProvider() + { + @Override + public String getText(Object element) + { + return Values.Money.format( + ((AccountTransaction) ((TransactionPair) element).getTransaction()).getGrossValue(), + client.getBaseCurrency()); + } + }); + ColumnViewerSorter.create(e -> ((TransactionPair) e).getTransaction().getMonetaryAmount()).attachTo(column); + support.addColumn(column); + + column = new Column(Messages.ColumnTaxes, SWT.RIGHT, 80); + column.setLabelProvider(new ColumnLabelProvider() + { + @Override + public String getText(Object element) + { + return Values.Money.format(((TransactionPair) element).getTransaction().getUnitSum(Unit.Type.TAX), + client.getBaseCurrency()); + } + }); + ColumnViewerSorter.create(e -> ((TransactionPair) e).getTransaction().getUnitSum(Unit.Type.TAX)) + .attachTo(column); + support.addColumn(column); + column = new Column(Messages.ColumnAmount, SWT.RIGHT, 80); column.setLabelProvider(new ColumnLabelProvider() {