in lib/zuora-core/src/main/scala/com/gu/zuora/subscription/Subscription.scala [19:39]
def ratePlanCharge(request: CreditRequest): Option[RatePlanCharge] = {
def isMatchingPlan(plan: RatePlan): Boolean = plan.productName == "Discounts"
def isMatchingCharge(charge: RatePlanCharge): Boolean = {
val publicationDate = request.publicationDate.value
charge.name == request.productRatePlanChargeName &&
charge.HolidayStart__c.exists { start =>
start.isEqual(publicationDate) || start.isBefore(publicationDate)
} &&
charge.HolidayEnd__c.exists { end =>
end.isEqual(publicationDate) || end.isAfter(publicationDate)
}
}
val charges = for {
plan <- ratePlans if isMatchingPlan(plan)
charge <- plan.ratePlanCharges.find(isMatchingCharge)
} yield charge
charges.headOption
}