package name.abuchen.portfolio.ui.views.actions; import org.eclipse.jface.action.Action; import name.abuchen.portfolio.model.Client; import name.abuchen.portfolio.model.PortfolioTransaction; import name.abuchen.portfolio.model.TransactionPair; import name.abuchen.portfolio.ui.Messages; public class ConvertBuySellToDeliveryAction extends Action { private final Client client; private final TransactionPair<PortfolioTransaction> transaction; public ConvertBuySellToDeliveryAction(Client client, TransactionPair<PortfolioTransaction> transaction) { this.client = client; this.transaction = transaction; if (transaction.getTransaction().getType() != PortfolioTransaction.Type.BUY && transaction.getTransaction().getType() != PortfolioTransaction.Type.SELL) throw new IllegalArgumentException(); setText(transaction.getTransaction().getType() == PortfolioTransaction.Type.BUY ? Messages.MenuConvertToInboundDelivery : Messages.MenuConvertToOutboundDelivery); } @Override public void run() { // delete existing transaction PortfolioTransaction buySellTransaction = transaction.getTransaction(); transaction.getOwner().deleteTransaction(buySellTransaction, client); // create new delivery PortfolioTransaction delivery = new PortfolioTransaction(); delivery.setType(buySellTransaction.getType() == PortfolioTransaction.Type.BUY ? PortfolioTransaction.Type.DELIVERY_INBOUND : PortfolioTransaction.Type.DELIVERY_OUTBOUND); delivery.setDate(buySellTransaction.getDate()); delivery.setMonetaryAmount(buySellTransaction.getMonetaryAmount()); delivery.setSecurity(buySellTransaction.getSecurity()); delivery.setNote(buySellTransaction.getNote()); delivery.setShares(buySellTransaction.getShares()); buySellTransaction.getUnits().forEach(delivery::addUnit); transaction.getOwner().addTransaction(delivery); client.markDirty(); } }