def zuoraUpdate()

in lambda/src/main/scala/pricemigrationengine/migrations/Newspaper2024Migration/Amendment.scala [46:73]


  def zuoraUpdate(
      subscription: ZuoraSubscription,
      effectiveDate: LocalDate,
  ): Either[DataExtractionFailure, ZuoraSubscriptionUpdate] = {
    for {
      data2024 <- Estimation.subscriptionToSubscriptionData2024(subscription).left.map(DataExtractionFailure)
      chargeDistribution <- subscriptionToNewChargeDistribution2024(subscription).toRight(
        DataExtractionFailure("Could not extract charge distribution")
      )
    } yield ZuoraSubscriptionUpdate(
      add = List(
        AddZuoraRatePlan(
          productRatePlanId = data2024.targetRatePlanId,
          contractEffectiveDate = effectiveDate,
          chargeOverrides =
            chargeDistributionToChargeOverrides(chargeDistribution, BillingPeriod.toString(data2024.billingPeriod))
        )
      ),
      remove = List(
        RemoveZuoraRatePlan(
          ratePlanId = data2024.ratePlan.id,
          effectiveDate
        )
      ),
      currentTerm = None,
      currentTermPeriodType = None
    )
  }