in handlers/product-move-api/src/main/scala/com/gu/productmove/zuora/Subscribe.scala [47:92]
def create(
zuoraAccountId: String,
targetProductId: String,
): RIO[Subscribe with Stage, CreateSubscriptionResponse] =
ZIO.serviceWithZIO[Subscribe](_.create(zuoraAccountId, targetProductId))
}
case class CreateSubscriptionResponse(subscriptionNumber: String)
given JsonDecoder[CreateSubscriptionResponse] = DeriveJsonDecoder.gen[CreateSubscriptionResponse]
case class ChargeOverrides(
price: Option[BigDecimal] = None,
productRatePlanChargeId: String,
discountPercentage: Option[Int] = None,
upToPeriods: Option[Int] = None,
endDateCondition: Option[String] = None,
triggerDate: Option[LocalDate] = None,
triggerEvent: Option[String] = None,
)
given JsonEncoder[ChargeOverrides] = DeriveJsonEncoder.gen[ChargeOverrides]
case class ZuoraAccountId(value: String) extends AnyVal
case class CaseId(value: String) extends AnyVal
case class AcquisitionSource(value: String) extends AnyVal
case class SubscribeToRatePlans(productRatePlanId: String, chargeOverrides: List[ChargeOverrides] = List())
given JsonEncoder[SubscribeToRatePlans] = DeriveJsonEncoder.gen[SubscribeToRatePlans]
case class SubscribeRequest(
accountKey: String,
autoRenew: Boolean = true,
contractEffectiveDate: LocalDate,
customerAcceptanceDate: LocalDate,
termType: String = "TERMED",
renewalTerm: Int = 12,
initialTerm: Int = 12,
subscribeToRatePlans: List[SubscribeToRatePlans],
AcquisitionCase__c: String,
AcquisitionSource__c: String,
CreatedByCSR__c: String,
)
object SubscribeRequest {