Search in sources :

Example 21 with ReportingPeriod

use of name.abuchen.portfolio.snapshot.ReportingPeriod in project portfolio by buchen.

the class Issue672CapitalGainsIfSecurityIsTransferred method testPurchaseValueOfSecurityPositionWithTransfers.

@Test
public void testPurchaseValueOfSecurityPositionWithTransfers() throws IOException {
    Client client = ClientFactory.load(Issue371PurchaseValueWithTransfers.class.getResourceAsStream(// $NON-NLS-1$
    "Issue672CapitalGainsIfSecurityIsTransferred.xml"));
    CurrencyConverter converter = new TestCurrencyConverter();
    Portfolio secondPortfolio = client.getPortfolios().get(1);
    ReportingPeriod period = new // $NON-NLS-1$
    ReportingPeriod.FromXtoY(// $NON-NLS-1$
    LocalDate.parse("2016-01-01"), // $NON-NLS-1$
    LocalDate.parse("2017-01-01"));
    SecurityPerformanceSnapshot snapshot = SecurityPerformanceSnapshot.create(client, converter, secondPortfolio, period);
    assertThat(snapshot.getRecords().size(), is(1));
    SecurityPerformanceRecord record = snapshot.getRecords().get(0);
    assertThat(record.getMarketValue(), is(Money.of(CurrencyUnit.EUR, Values.Money.factorize(971.41))));
    assertThat(record.getFifoCost(), is(Money.of(CurrencyUnit.EUR, Values.Money.factorize(883.1))));
    assertThat(record.getCapitalGainsOnHoldings(), is(Money.of(CurrencyUnit.EUR, Values.Money.factorize(88.31))));
    assertThat(record.getCapitalGainsOnHoldingsPercent(), is(IsCloseTo.closeTo(0.1d, 0.0000000001)));
}
Also used : ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) Portfolio(name.abuchen.portfolio.model.Portfolio) SecurityPerformanceRecord(name.abuchen.portfolio.snapshot.security.SecurityPerformanceRecord) Client(name.abuchen.portfolio.model.Client) SecurityPerformanceSnapshot(name.abuchen.portfolio.snapshot.security.SecurityPerformanceSnapshot) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) Test(org.junit.Test)

Example 22 with ReportingPeriod

use of name.abuchen.portfolio.snapshot.ReportingPeriod in project portfolio by buchen.

the class IssueCurrencyGainsRoundingError method testPurchaseValueOfSecurityPositionWithTransfers.

@Test
public void testPurchaseValueOfSecurityPositionWithTransfers() throws IOException {
    Client client = ClientFactory.load(IssueCurrencyGainsRoundingError.class.getResourceAsStream(// $NON-NLS-1$
    "IssueCurrencyGainsRoundingError.xml"));
    ReportingPeriod period = new // $NON-NLS-1$
    ReportingPeriod.FromXtoY(// $NON-NLS-1$
    LocalDate.parse("2015-01-09"), // $NON-NLS-1$
    LocalDate.parse("2016-01-09"));
    CurrencyConverter converter = new TestCurrencyConverter();
    ClientPerformanceSnapshot snapshot = new ClientPerformanceSnapshot(client, converter, period);
    MutableMoney currencyGains = MutableMoney.of(converter.getTermCurrency());
    currencyGains.subtract(snapshot.getValue(CategoryType.INITIAL_VALUE));
    currencyGains.subtract(snapshot.getValue(CategoryType.CAPITAL_GAINS));
    currencyGains.subtract(snapshot.getValue(CategoryType.EARNINGS));
    currencyGains.add(snapshot.getValue(CategoryType.FEES));
    currencyGains.add(snapshot.getValue(CategoryType.TAXES));
    currencyGains.add(snapshot.getValue(CategoryType.TRANSFERS));
    currencyGains.add(snapshot.getValue(CategoryType.FINAL_VALUE));
    assertThat(snapshot.getCategoryByType(CategoryType.CURRENCY_GAINS).getValuation(), is(currencyGains.toMoney()));
}
Also used : ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) MutableMoney(name.abuchen.portfolio.money.MutableMoney) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) Client(name.abuchen.portfolio.model.Client) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) ClientPerformanceSnapshot(name.abuchen.portfolio.snapshot.ClientPerformanceSnapshot) Test(org.junit.Test)

Example 23 with ReportingPeriod

use of name.abuchen.portfolio.snapshot.ReportingPeriod in project portfolio by buchen.

the class PerformanceView method reportingPeriodUpdated.

@Override
public void reportingPeriodUpdated() {
    ReportingPeriod period = getReportingPeriod();
    CurrencyConverter converter = new CurrencyConverterImpl(factory, getClient().getBaseCurrency());
    Client filteredClient = clientFilter.getSelectedFilter().filter(getClient());
    ClientPerformanceSnapshot snapshot = new ClientPerformanceSnapshot(filteredClient, converter, period);
    try {
        calculation.getTree().setRedraw(false);
        calculation.setInput(snapshot);
        calculation.expandAll();
        calculation.getTree().getParent().layout();
    } finally {
        calculation.getTree().setRedraw(true);
    }
    snapshotStart.setInput(snapshot.getStartClientSnapshot(), clientFilter.getSelectedFilter());
    snapshotEnd.setInput(snapshot.getEndClientSnapshot(), clientFilter.getSelectedFilter());
    earnings.setInput(snapshot.getEarnings());
    earningsByAccount.setInput(new GroupEarningsByAccount(snapshot).getItems());
    taxes.setInput(snapshot.getTaxes());
    fees.setInput(snapshot.getFees());
}
Also used : ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) GroupEarningsByAccount(name.abuchen.portfolio.snapshot.GroupEarningsByAccount) Client(name.abuchen.portfolio.model.Client) CurrencyConverterImpl(name.abuchen.portfolio.money.CurrencyConverterImpl) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) ClientPerformanceSnapshot(name.abuchen.portfolio.snapshot.ClientPerformanceSnapshot)

Example 24 with ReportingPeriod

use of name.abuchen.portfolio.snapshot.ReportingPeriod in project portfolio by buchen.

the class StatementOfAssetsViewer method addPerformanceColumns.

private void addPerformanceColumns(List<ReportingPeriod> options) {
    ReportingPeriodLabelProvider labelProvider;
    // $NON-NLS-1$
    Column column = new Column("ttwror", Messages.ColumnTWROR, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getTrueTimeWeightedRateOfReturn);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnTTWROR_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnTWROR_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("irr", Messages.ColumnIRR, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getIrr);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnIRRPerformanceOption, options));
    column.setMenuLabel(Messages.ColumnIRR_MenuLabel);
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    Function<Stream<Object>, Object> sum = elements -> elements.map(e -> (Money) e).collect(MoneyCollectors.sum(client.getBaseCurrency()));
    // $NON-NLS-1$
    column = new Column("capitalgains", Messages.ColumnCapitalGains, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getCapitalGainsOnHoldings, sum, true);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnCapitalGains_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnCapitalGains_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("capitalgains%", Messages.ColumnCapitalGainsPercent, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getCapitalGainsOnHoldingsPercent);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnCapitalGainsPercent_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnCapitalGainsPercent_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("capitalgainsmvavg", Messages.ColumnCapitalGainsMovingAverage, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getCapitalGainsOnHoldingsMovingAverage, sum, true);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnCapitalGainsMovingAverage_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnCapitalGainsMovingAverage_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("capitalgainsmvavg%", Messages.ColumnCapitalGainsMovingAveragePercent, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getCapitalGainsOnHoldingsMovingAveragePercent);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnCapitalGainsMovingAveragePercent_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnCapitalGainsMovingAveragePercent_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("delta", Messages.ColumnAbsolutePerformance_MenuLabel, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getDelta, sum, true);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnAbsolutePerformance_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnAbsolutePerformance_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
    // $NON-NLS-1$
    column = new Column("delta%", Messages.ColumnAbsolutePerformancePercent_MenuLabel, SWT.RIGHT, 80);
    labelProvider = new ReportingPeriodLabelProvider(SecurityPerformanceRecord::getDeltaPercent);
    column.setOptions(new ReportingPeriodColumnOptions(Messages.ColumnAbsolutePerformancePercent_Option, options));
    column.setGroupLabel(Messages.GroupLabelPerformance);
    column.setDescription(Messages.ColumnAbsolutePerformancePercent_Description);
    column.setLabelProvider(labelProvider);
    column.setSorter(ColumnViewerSorter.create(new ElementComparator(labelProvider)));
    column.setVisible(false);
    support.addColumn(column);
}
Also used : ReportingPeriodColumnOptions(name.abuchen.portfolio.ui.util.viewers.ReportingPeriodColumnOptions) Adaptable(name.abuchen.portfolio.model.Adaptable) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) Arrays(java.util.Arrays) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) Client(name.abuchen.portfolio.model.Client) TableViewer(org.eclipse.jface.viewers.TableViewer) DND(org.eclipse.swt.dnd.DND) SecurityPosition(name.abuchen.portfolio.snapshot.SecurityPosition) SecurityDragListener(name.abuchen.portfolio.ui.dnd.SecurityDragListener) Classification(name.abuchen.portfolio.model.Classification) AttributeComparator(name.abuchen.portfolio.ui.util.AttributeComparator) ESelectionService(org.eclipse.e4.ui.workbench.modeling.ESelectionService) Composite(org.eclipse.swt.widgets.Composite) MoneyCollectors(name.abuchen.portfolio.money.MoneyCollectors) AbstractFinanceView(name.abuchen.portfolio.ui.AbstractFinanceView) Map(java.util.Map) ColumnViewerToolTipSupport(org.eclipse.jface.viewers.ColumnViewerToolTipSupport) ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) UIConstants(name.abuchen.portfolio.ui.UIConstants) GroupByTaxonomy(name.abuchen.portfolio.snapshot.GroupByTaxonomy) Separator(org.eclipse.jface.action.Separator) Account(name.abuchen.portfolio.model.Account) ClientFilter(name.abuchen.portfolio.snapshot.filter.ClientFilter) MenuManager(org.eclipse.jface.action.MenuManager) Security(name.abuchen.portfolio.model.Security) Display(org.eclipse.swt.widgets.Display) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) ExchangeRate(name.abuchen.portfolio.money.ExchangeRate) SecurityPerformanceRecord(name.abuchen.portfolio.snapshot.security.SecurityPerformanceRecord) Collectors(java.util.stream.Collectors) ColumnEditingSupport(name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport) PortfolioSnapshot(name.abuchen.portfolio.snapshot.PortfolioSnapshot) Transfer(org.eclipse.swt.dnd.Transfer) ShowHideColumnHelper(name.abuchen.portfolio.ui.util.viewers.ShowHideColumnHelper) Objects(java.util.Objects) OptionLabelProvider(name.abuchen.portfolio.ui.util.viewers.OptionLabelProvider) List(java.util.List) Stream(java.util.stream.Stream) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) LocalDate(java.time.LocalDate) SWT(org.eclipse.swt.SWT) PostConstruct(javax.annotation.PostConstruct) Attributable(name.abuchen.portfolio.model.Attributable) SecurityTransfer(name.abuchen.portfolio.ui.dnd.SecurityTransfer) SecuritySelection(name.abuchen.portfolio.ui.selection.SecuritySelection) LabelOnly(name.abuchen.portfolio.ui.util.LabelOnly) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) InvestmentVehicle(name.abuchen.portfolio.model.InvestmentVehicle) NameColumnLabelProvider(name.abuchen.portfolio.ui.views.columns.NameColumn.NameColumnLabelProvider) Images(name.abuchen.portfolio.ui.Images) Image(org.eclipse.swt.graphics.Image) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition) HashMap(java.util.HashMap) JFaceResources(org.eclipse.jface.resource.JFaceResources) Function(java.util.function.Function) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) SecurityPerformanceSnapshot(name.abuchen.portfolio.snapshot.security.SecurityPerformanceSnapshot) Annotated(name.abuchen.portfolio.model.Annotated) Messages(name.abuchen.portfolio.ui.Messages) IStructuredContentProvider(org.eclipse.jface.viewers.IStructuredContentProvider) StringEditingSupport(name.abuchen.portfolio.ui.util.viewers.StringEditingSupport) Font(org.eclipse.swt.graphics.Font) MarkDirtyListener(name.abuchen.portfolio.ui.util.viewers.ColumnEditingSupport.MarkDirtyListener) Taxonomy(name.abuchen.portfolio.model.Taxonomy) Portfolio(name.abuchen.portfolio.model.Portfolio) FontDescriptor(org.eclipse.jface.resource.FontDescriptor) Shell(org.eclipse.swt.widgets.Shell) Viewer(org.eclipse.jface.viewers.Viewer) AssetCategory(name.abuchen.portfolio.snapshot.AssetCategory) Column(name.abuchen.portfolio.ui.util.viewers.Column) ColumnViewerSorter(name.abuchen.portfolio.ui.util.viewers.ColumnViewerSorter) Action(org.eclipse.jface.action.Action) Preference(org.eclipse.e4.core.di.extensions.Preference) SharesLabelProvider(name.abuchen.portfolio.ui.util.viewers.SharesLabelProvider) Color(org.eclipse.swt.graphics.Color) IMenuManager(org.eclipse.jface.action.IMenuManager) Named(name.abuchen.portfolio.model.Named) ToolTip(org.eclipse.jface.window.ToolTip) LocalResourceManager(org.eclipse.jface.resource.LocalResourceManager) Menu(org.eclipse.swt.widgets.Menu) Comparator(java.util.Comparator) Control(org.eclipse.swt.widgets.Control) Money(name.abuchen.portfolio.money.Money) ReportingPeriodColumnOptions(name.abuchen.portfolio.ui.util.viewers.ReportingPeriodColumnOptions) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) TaxonomyColumn(name.abuchen.portfolio.ui.views.columns.TaxonomyColumn) AttributeColumn(name.abuchen.portfolio.ui.views.columns.AttributeColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) IsinColumn(name.abuchen.portfolio.ui.views.columns.IsinColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) Stream(java.util.stream.Stream)

Example 25 with ReportingPeriod

use of name.abuchen.portfolio.snapshot.ReportingPeriod in project portfolio by buchen.

the class ExchangeRateWidget method createControl.

@Override
public Composite createControl(Composite parent, DashboardResources resources) {
    Composite container = new Composite(parent, SWT.NONE);
    container.setBackground(parent.getBackground());
    GridLayoutFactory.fillDefaults().numColumns(1).margins(5, 5).applyTo(container);
    title = new Label(container, SWT.NONE);
    title.setText(getWidget().getLabel());
    GridDataFactory.fillDefaults().grab(true, false).applyTo(title);
    indicator = new Label(container, SWT.NONE);
    indicator.setFont(resources.getKpiFont());
    // $NON-NLS-1$
    indicator.setText("");
    GridDataFactory.fillDefaults().grab(true, false).applyTo(indicator);
    InfoToolTip.attach(indicator, () -> {
        ReportingPeriod period = get(ReportingPeriodConfig.class).getReportingPeriod();
        ExchangeRateTimeSeries series = get(ExchangeRateSeriesConfig.class).getSeries();
        Optional<ExchangeRate> rate = series.lookupRate(period.getEndDate());
        return rate.isPresent() ? MessageFormat.format(Messages.TooltipDateOfExchangeRate, formatter.format(rate.get().getTime())) : // $NON-NLS-1$
        "";
    });
    return container;
}
Also used : ReportingPeriod(name.abuchen.portfolio.snapshot.ReportingPeriod) ExchangeRate(name.abuchen.portfolio.money.ExchangeRate) Composite(org.eclipse.swt.widgets.Composite) ExchangeRateTimeSeries(name.abuchen.portfolio.money.ExchangeRateTimeSeries) Label(org.eclipse.swt.widgets.Label)

Aggregations

ReportingPeriod (name.abuchen.portfolio.snapshot.ReportingPeriod)27 Test (org.junit.Test)14 Client (name.abuchen.portfolio.model.Client)13 ArrayList (java.util.ArrayList)11 Security (name.abuchen.portfolio.model.Security)11 IOException (java.io.IOException)8 TestCurrencyConverter (name.abuchen.portfolio.TestCurrencyConverter)8 CurrencyConverter (name.abuchen.portfolio.money.CurrencyConverter)8 PerformanceIndex (name.abuchen.portfolio.snapshot.PerformanceIndex)8 SecurityPerformanceRecord (name.abuchen.portfolio.snapshot.security.SecurityPerformanceRecord)8 SecurityPerformanceSnapshot (name.abuchen.portfolio.snapshot.security.SecurityPerformanceSnapshot)8 Portfolio (name.abuchen.portfolio.model.Portfolio)5 Composite (org.eclipse.swt.widgets.Composite)5 LocalDate (java.time.LocalDate)4 PortfolioTransaction (name.abuchen.portfolio.model.PortfolioTransaction)4 ExchangeRate (name.abuchen.portfolio.money.ExchangeRate)4 ClientSnapshot (name.abuchen.portfolio.snapshot.ClientSnapshot)4 List (java.util.List)3 Function (java.util.function.Function)3 Collectors (java.util.stream.Collectors)3