Java + JDBC repository (SQLite, a copy of data/laundry.db)
  PASS  find B2953: Lestari Mahendra, Dry cleaning - dress/kebaya (per item), charged Rp 45.000, paid Rp 45.000, balance Rp 0
  PASS  counts before: Bill 2953, Payment 3319, StatusLog 8802
  PASS  create bill + first payment: B2954, 5 kg x Rp 8.000 = Rp 40.000, paid Rp 20.000, balance Rp 20.000
  PASS  three rows written: Bill 2954, Payment 3320, StatusLog 8803
  PASS  create bill, no payment: B2955, charged Rp 70.000, nothing paid
  PASS  rollback: payment larger than the charge: A first payment must be between Rp 0 and the charge, Rp 40.000.
  PASS  rollback: bad method after bill and log were written: [SQLITE_CONSTRAINT_CHECK] A CHECK constraint failed (CHECK constraint failed: Payment_method_enum)
  PASS  rollback: unknown customer: [SQLITE_CONSTRAINT_FOREIGNKEY] A foreign key constraint failed (FOREIGN KEY constraint failed)
  PASS  counts after three refusals: Bill 2955, Payment 3320, StatusLog 8804
  PASS  payment above the balance refused: A payment must be between Rp 1 and the balance, Rp 20.000.
  PASS  pay the rest: balance Rp 0
  PASS  workflow: finished, departed, then: Bill B2954 has already departed.
  PASS  search is a value, not SQL: "x' OR '1'='1" -> 0 rows, "%" -> 0 rows, "rahman" -> 6 rows
  PASS  recent bills of one outlet: B2954 2026-09-30, B2953 2026-09-30, B2949 2026-09-30
  PASS  outlet filter refuses an expression: 'O01' OR '1'='1' is not an outlet id.
15 passed, 0 failed
