in src/main/scala/com/gu/invoicing/invoice/Model.scala [75:113]
def apply(invoiceWithPayment: InvoiceWithPayment): MmaInvoiceWithPayment = {
val mmaResponse = new MmaInvoiceWithPayment(
invoiceId = invoiceWithPayment.invoiceId,
subscriptionName = invoiceWithPayment.subscriptionName,
date = invoiceWithPayment.date,
pdfPath = invoiceWithPayment.pdfPath,
price = invoiceWithPayment.price,
paymentMethod = invoiceWithPayment.paymentMethod.Type,
hasMultipleSubs = false,
)
val paymentMethod = invoiceWithPayment.paymentMethod
import paymentMethod._
paymentMethod.Type match { // ACH, BankTransfer, Cash, Check, CreditCard, CreditCardReferenceTransaction, DebitCard, Other, PayPal, WireTransfer
case "CreditCard" | "CreditCardReferenceTransaction" | "DebitCard" =>
mmaResponse.copy(
last4 = CreditCardMaskNumber.map(dropMaskPrefix),
cardType = CreditCardType,
paymentMethod = "Card",
)
case "BankTransfer" =>
mmaResponse.copy(
last4 = BankTransferAccountNumberMask.map(dropMaskPrefix),
paymentMethod = paymentMethod.BankTransferType match {
case Some("SEPA") => "Sepa"
case _ => "DirectDebit"
},
)
case "PayPal" =>
mmaResponse.copy(
last4 = None,
paymentMethod = "PayPal",
)
case _ =>
throw new RuntimeException(s"Unexpected payment method: ${paymentMethod.spy}")
}
}