in src/payments/src/main/java/com/google/abmedge/payments/util/BillGenerator.java [54:91]
public static Bill generateBill(UUID paymentId, Payment payment) {
float total = 0;
StringBuilder billBuilder = new StringBuilder();
billBuilder.append(billHeader(paymentId));
// append an entry per purchase item to the bill
int itemIndex = 1;
for (PaymentUnit pu : payment.getUnitList()) {
billBuilder.append(billItem(itemIndex, pu));
total += pu.getTotalCost().floatValue();
itemIndex++;
}
billBuilder.append(BILL_HEADER);
float tax = Double.valueOf(total * TAX_VALUE).floatValue();
float paid = payment.getPaidAmount().floatValue();
float balance = paid - total - tax;
billBuilder.append(infoLine(TOTAL, total));
billBuilder.append(infoLine(TAX, tax));
billBuilder.append(infoLine(PAID, paid));
billBuilder.append(infoLine(BALANCE, balance));
billBuilder.append(BILL_HEADER);
LOGGER.info(String.format("Processed payment:\n%s", billBuilder));
// ----------------------------------------------------------------------------
// Payment id: 02beba81-e19f-4543-9823-261db722ed02
// ----------------------------------------------------------------------------
// 1. 5x BigBurger (02beba81-e19f-4543-9823-261db722ed02): $34.44
// 2. 4x DoubleBurger (4df41297-a96f-4602-8059-df3b0e4071cb): $21.2
// ----------------------------------------------------------------------------
// Total: $55.64
// Tax: $8.31
// Paid: $5000.00
// Balance: $4936.04
// ----------------------------------------------------------------------------
return new Bill()
.setPayment(payment)
.setStatus(PaymentStatus.SUCCESS)
.setBalance(new BigDecimal(String.format("%.2f", balance)))
.setPrintedBill(billBuilder.toString());
}