@EventListener
public void handle(OrderSubmittedEvent event){
Purchase purchase = purchaseRepository.load(event.getOrderId());
Client client = clientRepository.load(purchase.getClientData().getAggregateId());
InvoiceRequest request = invoiceRequestFactory.create(client, purchase);
Invoice invoice = bookKeeper.issuance(request, taxAdvisor.suggestBestTax(client));
invoiceRepository.save(invoice);
}