public Invoice issuance(InvoiceRequest invoiceRequest, TaxPolicy taxPolicy) { Invoice invoice = invoiceFactory.create(invoiceRequest.getClientData()); for (RequestItem item : invoiceRequest.getItems()) { Money net = item.getTotalCost(); Tax tax = taxPolicy.calculateTax(item.getProductData().getType(), net); InvoiceLine invoiceLine = new InvoiceLine(item.getProductData(), item.getQuantity(), net, tax); invoice.addItem(invoiceLine); } return invoice; }