in src/main/scala/com/gu/invoicing/preview/Impl.scala [150:171]
def collectRelevantInvoiceItems(
subscriptionName: String,
invoiceItems: List[InvoiceItem],
): List[InvoiceItem] =
invoiceItems.iterator
.filter(_.subscriptionName == subscriptionName)
.filterNot(_.productName == "Discounts")
.filterNot(isDigitalProduct)
.filterNot(_.chargeAmount < 0.0)
.filterNot(v => v.serviceStartDate == v.serviceEndDate)
.toList
.sortBy(_.serviceStartDate)
/** Some products are outright digital (Contribution) and some have a digital component (paper + digital)
*/
def isDigitalProduct(item: InvoiceItem): Boolean = {
List(
"digi",
"contrib",
"support",
).exists(item.chargeName.toLowerCase.contains)
}