public String generateInvoice(final Account account, @Nullable final Invoice invoice, final boolean manualPay) throws IOException {
if (invoice == null) {
return null;
}
final Map<String, Object> data = new HashMap<String, Object>();
final DefaultInvoiceTranslator invoiceTranslator = new DefaultInvoiceTranslator(config);
final Locale locale = LocaleUtils.toLocale(account.getLocale());
invoiceTranslator.setLocale(locale);
data.put("text", invoiceTranslator);
data.put("account", account);
final InvoiceFormatter formattedInvoice = factory.createInvoiceFormatter(config, invoice, locale, currencyConversionApi);
data.put("invoice", formattedInvoice);
if (manualPay) {
return templateEngine.executeTemplate(config.getManualPayTemplateName(), data);
} else {
return templateEngine.executeTemplate(config.getTemplateName(), data);
}
}
}