Skip to content

Commit 73152d5

Browse files
committed
#219 initial work for setting the bank instructions in the invoice
1 parent e066eb1 commit 73152d5

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

src/main/java/alfio/controller/ReservationController.java

+8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import alfio.util.ErrorsCode;
3838
import alfio.util.TemplateManager;
3939
import alfio.util.TemplateResource;
40+
import org.apache.commons.lang3.StringUtils;
4041
import org.apache.commons.lang3.tuple.Pair;
4142
import org.apache.commons.lang3.tuple.Triple;
4243
import org.springframework.beans.factory.annotation.Autowired;
@@ -60,6 +61,7 @@
6061

6162
import static alfio.model.system.ConfigurationKeys.ALLOW_FREE_TICKETS_CANCELLATION;
6263
import static alfio.model.system.ConfigurationKeys.BANK_ACCOUNT_NR;
64+
import static alfio.model.system.ConfigurationKeys.BANK_ACCOUNT_OWNER;
6365
import static java.util.stream.Collectors.toList;
6466

6567
@Controller
@@ -338,6 +340,12 @@ public String showWaitingPaymentPage(@PathVariable("eventName") String eventName
338340
model.addAttribute("paymentReason", ev.getShortName() + " " + ticketReservationManager.getShortReservationID(ev, reservationId));
339341
model.addAttribute("pageTitle", "reservation-page-waiting.header.title");
340342
model.addAttribute("bankAccount", configurationManager.getStringConfigValue(Configuration.from(ev.getOrganizationId(), ev.getId(), BANK_ACCOUNT_NR)).orElse(""));
343+
344+
345+
Optional<String> maybeAccountOwner = configurationManager.getStringConfigValue(Configuration.from(ev.getOrganizationId(), ev.getId(), BANK_ACCOUNT_OWNER));
346+
model.addAttribute("hasBankAccountOwnerSet", maybeAccountOwner.isPresent());
347+
model.addAttribute("bankAccountOwner", Arrays.asList(maybeAccountOwner.orElse("").split("\n")));
348+
341349
model.addAttribute("expires", ZonedDateTime.ofInstant(ticketReservation.getValidity().toInstant(), ev.getZoneId()));
342350
model.addAttribute("event", ev);
343351
return "/event/reservation-waiting-for-payment";

src/main/java/alfio/manager/TicketReservationManager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,9 @@ public Map<String, Object> prepareModelForReservationEmail(Event event, TicketRe
438438
String reservationUrl = reservationUrl(reservation.getId());
439439
String reservationShortID = getShortReservationID(event, reservation.getId());
440440
Optional<String> invoiceAddress = configurationManager.getStringConfigValue(Configuration.from(event.getOrganizationId(), event.getId(), ConfigurationKeys.INVOICE_ADDRESS));
441-
return TemplateResource.prepareModelForConfirmationEmail(organization, event, reservation, vat, tickets, summary, reservationUrl, reservationShortID, invoiceAddress);
441+
Optional<String> bankAccountNr = configurationManager.getStringConfigValue(Configuration.from(event.getOrganizationId(), event.getId(), ConfigurationKeys.BANK_ACCOUNT_NR));
442+
Optional<String> bankAccountOwner = configurationManager.getStringConfigValue(Configuration.from(event.getOrganizationId(), event.getId(), ConfigurationKeys.BANK_ACCOUNT_OWNER));
443+
return TemplateResource.prepareModelForConfirmationEmail(organization, event, reservation, vat, tickets, summary, reservationUrl, reservationShortID, invoiceAddress, bankAccountNr, bankAccountOwner);
442444
}
443445

444446
@Transactional(readOnly = true)

src/main/java/alfio/model/system/ConfigurationKeys.java

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public enum ConfigurationKeys {
6666
OFFLINE_PAYMENT_DAYS("Maximum number of days allowed to pay an offline ticket", false, SettingCategory.PAYMENT_OFFLINE, ComponentType.TEXT, false, EnumSet.of(SYSTEM, ORGANIZATION, EVENT), true),
6767
OFFLINE_REMINDER_HOURS("How many hours before expiration should be sent a reminder e-mail for offline payments?", false, SettingCategory.PAYMENT_OFFLINE, ComponentType.TEXT, false, EnumSet.of(SYSTEM, ORGANIZATION, EVENT), true),
6868
BANK_ACCOUNT_NR("Bank Account number", false, SettingCategory.PAYMENT_OFFLINE, ComponentType.TEXT, false, EnumSet.of(SYSTEM, ORGANIZATION, EVENT), false),
69+
BANK_ACCOUNT_OWNER("Bank Account owner", false, SettingCategory.PAYMENT_OFFLINE, ComponentType.TEXTAREA, false, EnumSet.of(SYSTEM, ORGANIZATION, EVENT), false),
6970
PARTIAL_RESERVATION_ID_LENGTH("Partial reservationID length", false, SettingCategory.PAYMENT_OFFLINE, ComponentType.TEXT, false, EnumSet.of(SYSTEM), true),
7071
//
7172

src/main/java/alfio/util/TemplateResource.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ private static Map<String, Object> prepareSampleDataForConfirmationEmail(Organiz
216216
Collections.singletonList(new SummaryRow("Ticket", "10.00", 1, "10.00", 1000, SummaryRow.SummaryType.TICKET)), false, "10.00", "0.80", false, false, "8");
217217
String reservationUrl = "http://your-domain.tld/reservation-url/";
218218
String reservationShortId = "597e7e7b";
219-
return prepareModelForConfirmationEmail(organization, event, reservation, vat, tickets, orderSummary, reservationUrl, reservationShortId, Optional.empty());
219+
return prepareModelForConfirmationEmail(organization, event, reservation, vat, tickets, orderSummary, reservationUrl, reservationShortId, Optional.of("My Invoice\nAddress"), Optional.empty(), Optional.empty());
220220
}
221221

222222
//used by multiple enum:
@@ -235,7 +235,9 @@ public static Map<String, Object> prepareModelForConfirmationEmail(Organization
235235
OrderSummary orderSummary,
236236
String reservationUrl,
237237
String reservationShortID,
238-
Optional<String> invoiceAddress) {
238+
Optional<String> invoiceAddress,
239+
Optional<String> bankAccountNr,
240+
Optional<String> bankAccountOwner) {
239241
Map<String, Object> model = new HashMap<>();
240242
model.put("organization", organization);
241243
model.put("event", event);
@@ -261,6 +263,17 @@ public static Map<String, Object> prepareModelForConfirmationEmail(Organization
261263
model.put("invoiceAddressAsList", Arrays.asList(StringUtils.split(addr, '\n')));
262264
});
263265

266+
model.put("hasBankAccountNr", bankAccountNr.isPresent());
267+
bankAccountNr.ifPresent(nr -> {
268+
model.put("bankAccountNr", nr);
269+
});
270+
271+
model.put("isOfflinePayment", reservation.getStatus() == TicketReservation.TicketReservationStatus.OFFLINE_PAYMENT);
272+
model.put("hasBankAccountOnwer", bankAccountOwner.isPresent());
273+
bankAccountOwner.ifPresent(owner -> {
274+
model.put("bankAccountOnwer", StringUtils.replace(owner, "\n", ", "));
275+
model.put("bankAccountOnwerAsList", Arrays.asList(StringUtils.split(owner, '\n')));
276+
});
264277

265278
return model;
266279
}

src/main/resources/alfio/templates/invoice.ms

+11-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@
3737
.border-bottom {
3838
border-bottom:1px solid black;
3939
}
40+
41+
table.summary {
42+
border-collapse:collapse;
43+
}
44+
45+
table.summary, table.summary th, table.summary td {
46+
border: 1px solid #aaa;
47+
padding:0;
48+
margin:0;
49+
}
4050
</style>
4151
</head>
4252
<body>
@@ -85,7 +95,7 @@
8595
<p>{{ticketReservation.email}}</p>
8696

8797
<h3 class="border-bottom">{{#i18n}}email-confirmation.reservation-summary{{/i18n}}</h3>
88-
<table style="width:100%">
98+
<table style="width:100%" class="summary">
8999
<thead>
90100
<tr>
91101
<th>{{#i18n}}reservation-page.category{{/i18n}}</th>

0 commit comments

Comments
 (0)