def apply()

in lambda/src/main/scala/pricemigrationengine/model/EstimationResult.scala [25:44]


  def apply(
      account: ZuoraAccount,
      catalogue: ZuoraProductCatalogue,
      subscription: ZuoraSubscription,
      invoiceList: ZuoraInvoiceList,
      startDateLowerBound: LocalDate,
      cohortSpec: CohortSpec,
  ): Either[Failure, EstimationData] = {
    for {
      startDate <- AmendmentData.nextServiceStartDate(invoiceList, subscription, startDateLowerBound)
      priceData <- AmendmentData.priceData(account, catalogue, subscription, invoiceList, startDate, cohortSpec)
    } yield EstimationData(
      subscription.subscriptionNumber,
      startDate,
      priceData.currency,
      priceData.oldPrice,
      priceData.newPrice,
      priceData.billingPeriod
    )
  }