Search in sources :

Example 21 with Money

use of name.abuchen.portfolio.money.Money in project portfolio by buchen.

the class TaxonomyModel method visitActuals.

private void visitActuals(ClientSnapshot snapshot, TaxonomyNode node) {
    MutableMoney actual = MutableMoney.of(snapshot.getCurrencyCode());
    for (TaxonomyNode child : node.getChildren()) {
        visitActuals(snapshot, child);
        actual.add(child.getActual());
    }
    if (node.isAssignment()) {
        Assignment assignment = node.getAssignment();
        AssetPosition p = snapshot.getPositionsByVehicle().get(assignment.getInvestmentVehicle());
        if (p != null) {
            Money valuation = p.getValuation();
            actual.add(Money.of(valuation.getCurrencyCode(), Math.round(valuation.getAmount() * assignment.getWeight() / (double) Classification.ONE_HUNDRED_PERCENT)));
        }
    }
    node.setActual(actual.toMoney());
}
Also used : Assignment(name.abuchen.portfolio.model.Classification.Assignment) Money(name.abuchen.portfolio.money.Money) MutableMoney(name.abuchen.portfolio.money.MutableMoney) MutableMoney(name.abuchen.portfolio.money.MutableMoney) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition)

Example 22 with Money

use of name.abuchen.portfolio.money.Money in project portfolio by buchen.

the class AccountListView method createTransactionTable.

protected Control createTransactionTable(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    TableColumnLayout layout = new TableColumnLayout();
    container.setLayout(layout);
    transactions = new TableViewer(container, SWT.FULL_SELECTION | SWT.MULTI);
    ColumnViewerToolTipSupport.enableFor(transactions, ToolTip.NO_RECREATE);
    ColumnEditingSupport.prepare(transactions);
    transactionsColumns = new // $NON-NLS-1$
    ShowHideColumnHelper(// $NON-NLS-1$
    AccountListView.class.getSimpleName() + "@bottom5", getPreferenceStore(), transactions, layout);
    Column column = new Column(Messages.ColumnDate, SWT.None, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            return Values.DateTime.format(((AccountTransaction) e).getDateTime());
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    ColumnViewerSorter.create(new AccountTransaction.ByDateAmountTypeAndHashCode()).attachTo(column, SWT.DOWN);
    // $NON-NLS-1$
    new DateTimeEditingSupport(AccountTransaction.class, "dateTime").addListener(this).attachTo(column);
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnTransactionType, SWT.None, 100);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            return t.getType().toString();
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(AccountTransaction.class, "type"));
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnAmount, SWT.RIGHT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            long v = t.getAmount();
            if (t.getType().isDebit())
                v = -v;
            return Values.Money.format(Money.of(t.getCurrencyCode(), v), getClient().getBaseCurrency());
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(AccountTransaction.class, "amount"));
    transactionsColumns.addColumn(column);
    column = new Column(Messages.Balance, SWT.RIGHT, 80);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            Money balance = transaction2balance.get(e);
            return balance != null ? Values.Money.format(balance, getClient().getBaseCurrency()) : null;
        }
    });
    column.setSorter(ColumnViewerSorter.create(new AccountTransaction.ByDateAmountTypeAndHashCode()));
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnSecurity, SWT.None, 250);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            return t.getSecurity() != null ? String.valueOf(t.getSecurity()) : null;
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    // $NON-NLS-1$
    column.setSorter(ColumnViewerSorter.create(AccountTransaction.class, "security"));
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnShares, SWT.RIGHT, 80);
    column.setLabelProvider(new SharesLabelProvider() {

        @Override
        public Long getValue(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            if (t.getCrossEntry() instanceof BuySellEntry) {
                return ((BuySellEntry) t.getCrossEntry()).getPortfolioTransaction().getShares();
            } else if (t.getType() == Type.DIVIDENDS && t.getShares() != 0) {
                return t.getShares();
            } else {
                return null;
            }
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    new // $NON-NLS-1$
    ValueEditingSupport(// $NON-NLS-1$
    AccountTransaction.class, // $NON-NLS-1$
    "shares", // $NON-NLS-1$
    Values.Share) {

        @Override
        public boolean canEdit(Object element) {
            AccountTransaction t = (AccountTransaction) element;
            return t.getType() == AccountTransaction.Type.DIVIDENDS;
        }
    }.addListener(this).attachTo(column);
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnPerShare, SWT.RIGHT, 80);
    column.setDescription(Messages.ColumnPerShare_Description);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            if (t.getCrossEntry() instanceof BuySellEntry) {
                PortfolioTransaction pt = ((BuySellEntry) t.getCrossEntry()).getPortfolioTransaction();
                return Values.Quote.format(pt.getGrossPricePerShare(), getClient().getBaseCurrency());
            } else if (t.getType() == Type.DIVIDENDS && t.getShares() != 0) {
                long dividendPerShare = Math.round(t.getAmount() * Values.Share.divider() * Values.Quote.factorToMoney() / t.getShares());
                return Values.Quote.format(Quote.of(t.getCurrencyCode(), dividendPerShare), getClient().getBaseCurrency());
            } else {
                return null;
            }
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnOffsetAccount, SWT.None, 120);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            AccountTransaction t = (AccountTransaction) e;
            return t.getCrossEntry() != null ? t.getCrossEntry().getCrossOwner(t).toString() : null;
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }
    });
    transactionsColumns.addColumn(column);
    column = new Column(Messages.ColumnNote, SWT.None, 200);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object e) {
            return ((AccountTransaction) e).getNote();
        }

        @Override
        public Color getForeground(Object element) {
            return colorFor((AccountTransaction) element);
        }

        @Override
        public Image getImage(Object e) {
            String note = ((AccountTransaction) e).getNote();
            return note != null && note.length() > 0 ? Images.NOTE.image() : null;
        }
    });
    // $NON-NLS-1$
    ColumnViewerSorter.create(AccountTransaction.class, "note").attachTo(column);
    // $NON-NLS-1$
    new StringEditingSupport(AccountTransaction.class, "note").addListener(this).attachTo(column);
    transactionsColumns.addColumn(column);
    transactionsColumns.createColumns();
    transactions.getTable().setHeaderVisible(true);
    transactions.getTable().setLinesVisible(true);
    transactions.setContentProvider(ArrayContentProvider.getInstance());
    hookContextMenu(transactions.getTable(), this::fillTransactionsContextMenu);
    hookKeyListener();
    return container;
}
Also used : BuySellEntry(name.abuchen.portfolio.model.BuySellEntry) Composite(org.eclipse.swt.widgets.Composite) Color(org.eclipse.swt.graphics.Color) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) StringEditingSupport(name.abuchen.portfolio.ui.util.viewers.StringEditingSupport) Image(org.eclipse.swt.graphics.Image) DateTimeEditingSupport(name.abuchen.portfolio.ui.util.viewers.DateTimeEditingSupport) SharesLabelProvider(name.abuchen.portfolio.ui.util.viewers.SharesLabelProvider) ValueEditingSupport(name.abuchen.portfolio.ui.util.viewers.ValueEditingSupport) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) NameColumnLabelProvider(name.abuchen.portfolio.ui.views.columns.NameColumn.NameColumnLabelProvider) Money(name.abuchen.portfolio.money.Money) MutableMoney(name.abuchen.portfolio.money.MutableMoney) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) NameColumn(name.abuchen.portfolio.ui.views.columns.NameColumn) CurrencyColumn(name.abuchen.portfolio.ui.views.columns.CurrencyColumn) NoteColumn(name.abuchen.portfolio.ui.views.columns.NoteColumn) Column(name.abuchen.portfolio.ui.util.viewers.Column) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 23 with Money

use of name.abuchen.portfolio.money.Money in project portfolio by buchen.

the class SecuritiesChart method getMovingAveragePurchasePrice.

private Optional<Double> getMovingAveragePurchasePrice(Client filteredClient, CurrencyConverter currencyConverter, LocalDate date) {
    ClientSnapshot snapshot = ClientSnapshot.create(filteredClient, currencyConverter, date);
    AssetPosition position = snapshot.getPositionsByVehicle().get(security);
    if (position == null)
        return Optional.empty();
    Money purchasePrice = position.getPosition().getMovingAveragePurchasePrice();
    if (!purchasePrice.isZero())
        return Optional.of(purchasePrice.getAmount() / Values.Amount.divider());
    else
        return Optional.empty();
}
Also used : ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) Money(name.abuchen.portfolio.money.Money) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition)

Example 24 with Money

use of name.abuchen.portfolio.money.Money in project portfolio by buchen.

the class SecuritiesChart method getPurchasePrice.

private Optional<Double> getPurchasePrice(Client filteredClient, CurrencyConverter currencyConverter, LocalDate date) {
    ClientSnapshot snapshot = ClientSnapshot.create(filteredClient, currencyConverter, date);
    AssetPosition position = snapshot.getPositionsByVehicle().get(security);
    if (position == null)
        return Optional.empty();
    Money purchasePrice = position.getPosition().getFIFOPurchasePrice();
    if (!purchasePrice.isZero())
        return Optional.of(purchasePrice.getAmount() / Values.Amount.divider());
    else
        return Optional.empty();
}
Also used : ClientSnapshot(name.abuchen.portfolio.snapshot.ClientSnapshot) Money(name.abuchen.portfolio.money.Money) AssetPosition(name.abuchen.portfolio.snapshot.AssetPosition)

Example 25 with Money

use of name.abuchen.portfolio.money.Money in project portfolio by buchen.

the class ReviewExtractedItemsPage method addColumns.

private void addColumns(TableViewer viewer, TableColumnLayout layout) {
    TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
    column.getColumn().setText(Messages.ColumnStatus);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public Image getImage(ExtractedEntry element) {
            Images image = null;
            switch(element.getMaxCode()) {
                case WARNING:
                    image = Images.WARNING;
                    break;
                case ERROR:
                    image = Images.ERROR;
                    break;
                case OK:
                default:
            }
            return image != null ? image.image() : null;
        }

        @Override
        public String getText(ExtractedEntry entry) {
            // $NON-NLS-1$
            return "";
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(22, true));
    column = new TableViewerColumn(viewer, SWT.NONE);
    column.getColumn().setText(Messages.ColumnDate);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public String getText(ExtractedEntry entry) {
            LocalDateTime date = entry.getItem().getDate();
            return date != null ? Values.DateTime.format(date) : null;
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(80, true));
    column = new TableViewerColumn(viewer, SWT.NONE);
    column.getColumn().setText(Messages.ColumnTransactionType);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public String getText(ExtractedEntry entry) {
            return entry.getItem().getTypeInformation();
        }

        @Override
        public Image getImage(ExtractedEntry entry) {
            Annotated subject = entry.getItem().getSubject();
            if (subject instanceof AccountTransaction)
                return Images.ACCOUNT.image();
            else if (subject instanceof PortfolioTransaction)
                return Images.PORTFOLIO.image();
            else if (subject instanceof Security)
                return Images.SECURITY.image();
            else if (subject instanceof BuySellEntry)
                return Images.PORTFOLIO.image();
            else if (subject instanceof AccountTransferEntry)
                return Images.ACCOUNT.image();
            else if (subject instanceof PortfolioTransferEntry)
                return Images.PORTFOLIO.image();
            else
                return null;
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(100, true));
    column = new TableViewerColumn(viewer, SWT.RIGHT);
    column.getColumn().setText(Messages.ColumnAmount);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public String getText(ExtractedEntry entry) {
            Money amount = entry.getItem().getAmount();
            return amount != null ? Values.Money.format(amount) : null;
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(80, true));
    column = new TableViewerColumn(viewer, SWT.RIGHT);
    column.getColumn().setText(Messages.ColumnShares);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public String getText(ExtractedEntry entry) {
            return Values.Share.formatNonZero(entry.getItem().getShares());
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(80, true));
    column = new TableViewerColumn(viewer, SWT.NONE);
    column.getColumn().setText(Messages.ColumnSecurity);
    column.setLabelProvider(new // NOSONAR
    FormattedLabelProvider() {

        @Override
        public String getText(ExtractedEntry entry) {
            Security security = entry.getItem().getSecurity();
            return security != null ? security.getName() : null;
        }
    });
    layout.setColumnData(column.getColumn(), new ColumnPixelData(250, true));
}
Also used : LocalDateTime(java.time.LocalDateTime) BuySellEntry(name.abuchen.portfolio.model.BuySellEntry) Images(name.abuchen.portfolio.ui.Images) ColumnPixelData(org.eclipse.jface.viewers.ColumnPixelData) StyledString(org.eclipse.jface.viewers.StyledString) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) Image(org.eclipse.swt.graphics.Image) Security(name.abuchen.portfolio.model.Security) Annotated(name.abuchen.portfolio.model.Annotated) Money(name.abuchen.portfolio.money.Money) PortfolioTransaction(name.abuchen.portfolio.model.PortfolioTransaction) AccountTransferEntry(name.abuchen.portfolio.model.AccountTransferEntry) TableViewerColumn(org.eclipse.jface.viewers.TableViewerColumn) PortfolioTransferEntry(name.abuchen.portfolio.model.PortfolioTransferEntry)

Aggregations

Money (name.abuchen.portfolio.money.Money)38 Unit (name.abuchen.portfolio.model.Transaction.Unit)19 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)18 PortfolioTransaction (name.abuchen.portfolio.model.PortfolioTransaction)16 Client (name.abuchen.portfolio.model.Client)15 BigDecimal (java.math.BigDecimal)13 BuySellEntry (name.abuchen.portfolio.model.BuySellEntry)13 MutableMoney (name.abuchen.portfolio.money.MutableMoney)12 IOException (java.io.IOException)10 Security (name.abuchen.portfolio.model.Security)10 Block (name.abuchen.portfolio.datatransfer.pdf.PDFParser.Block)9 DocumentType (name.abuchen.portfolio.datatransfer.pdf.PDFParser.DocumentType)9 Transaction (name.abuchen.portfolio.datatransfer.pdf.PDFParser.Transaction)9 Map (java.util.Map)8 Account (name.abuchen.portfolio.model.Account)7 AssetPosition (name.abuchen.portfolio.snapshot.AssetPosition)7 LocalDate (java.time.LocalDate)6 ArrayList (java.util.ArrayList)6 List (java.util.List)6 Portfolio (name.abuchen.portfolio.model.Portfolio)6