private def billingPeriodForName()

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"))
    }
  }