in lib/zuora-core/src/main/scala/com/gu/zuora/subscription/RatePlanChargeBillingSchedule.scala [231:250]
private def billingPeriodForName(
billingPeriodName: String,
optionalSpecificBillingPeriod: Option[Int],
): Either[ZuoraApiFailure, BillingPeriod] = {
billingPeriodName match {
case "Annual" => Right(BillingPeriod(ChronoUnit.YEARS, 1))
case "Semi_Annual" | "Semi-Annual" => Right(BillingPeriod(ChronoUnit.MONTHS, 6))
case "Quarter" => Right(BillingPeriod(ChronoUnit.MONTHS, 3))
case "Month" => Right(BillingPeriod(ChronoUnit.MONTHS, 1))
case "Specific_Weeks" | "Specific Weeks" =>
optionalSpecificBillingPeriod
.toRight(ZuoraApiFailure(s"specificBillingPeriod is required for $billingPeriodName billing period"))
.map(BillingPeriod(ChronoUnit.WEEKS, _))
case "Specific_Months" | "Specific Months" =>
optionalSpecificBillingPeriod
.toRight(ZuoraApiFailure(s"specificBillingPeriod is required for $billingPeriodName billing period"))
.map(BillingPeriod(ChronoUnit.MONTHS, _))
case _ => Left(ZuoraApiFailure(s"Failed to determine duration of billing period: $billingPeriodName"))
}
}