in lambda/src/main/scala/pricemigrationengine/model/AmendmentData.scala [98:115]
def ratePlanChargePairs(
catalogue: ZuoraProductCatalogue,
ratePlanCharges: Seq[ZuoraRatePlanCharge]
): Either[DataExtractionFailure, Seq[RatePlanChargePair]] = {
/*
* distinct because where a sub has a discount rate plan,
* the same discount will appear against each product rate plan charge in the invoice preview.
*/
val pairs = ratePlanCharges.distinctBy(_.productRatePlanChargeId).map(rp => ratePlanChargePair(catalogue, rp))
val failures = pairs.collect { case Left(failure) => failure }
if (failures.isEmpty) Right(pairs.collect { case Right(pricing) => pricing })
else
Left(
DataExtractionFailure(
s"[AmendmentData] Failed to find matching product rate plan charges for rate plan charges: ${failures.mkString(", ")}"
)
)
}