in handlers/zuora-callout-apis/src/main/scala/com/gu/autoCancel/AutoCancel.scala [102:116]
def fromSummary(
accountId: String,
summary: InvoiceTransactionSummary,
idOfNegativeInvoice: String,
): ClientFailableOp[UnbalancedInvoices] =
for {
negativeInvoice <- summary.invoices.find(_.id == idOfNegativeInvoice) match {
case None => NotFound(s"No negative invoice in account $accountId", "")
case Some(invoice) => ClientSuccess(invoice)
}
unpaidInvoices <- summary.invoices.filter(_.balance > 0) match {
case Nil => NotFound(s"No unpaid invoices in account $accountId", "")
case invoices => ClientSuccess(invoices)
}
} yield UnbalancedInvoices(negativeInvoice, unpaidInvoices)