public static Bill generateBill()

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());
  }