Skip to content

Commit

Permalink
using the new orders api (with hardcoded values)
Browse files Browse the repository at this point in the history
  • Loading branch information
shtukas committed Oct 21, 2024
1 parent 31cf5e5 commit 1f47c38
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package pricemigrationengine.model

import pricemigrationengine.migrations.GuardianWeeklyMigration
import pricemigrationengine.model.ChargeOverride.fromRatePlanCharge

import java.time.LocalDate
import java.time.temporal.ChronoUnit.DAYS
import pricemigrationengine.model.Either._
import pricemigrationengine.model.ZuoraProductCatalogue.productPricingMap
import upickle.default.{ReadWriter, macroRW}

/*
{
"orderDate": "2024-10-21",
"existingAccountNumber": "A01269270",
"subscriptions": [
{
"subscriptionNumber": "A-S01310226",
"orderActions": [
{
"type": "RenewSubscription",
"triggerDates": [
{
"name": "ContractEffective",
"triggerDate": "2024-10-21"
},
{
"name": "ServiceActivation",
"triggerDate": "2024-10-21"
},
{
"name": "CustomerAcceptance",
"triggerDate": "2024-10-21"
}
]
}
]
}
],
"processingOptions": {
"runBilling": false,
"collectPayment": false
}
}
*/

case class ZuoraRenewOrderPayloadOrderActionTriggerDate(name: String, triggerDate: LocalDate)
object ZuoraRenewOrderPayloadOrderActionTriggerDate {
implicit val rwZuoraRenewOrderPayloadOrderActionTriggerDate
: ReadWriter[ZuoraRenewOrderPayloadOrderActionTriggerDate] = macroRW
}

case class ZuoraRenewOrderPayloadOrderAction(
`type`: String,
triggerDates: List[ZuoraRenewOrderPayloadOrderActionTriggerDate]
)
object ZuoraRenewOrderPayloadOrderAction {
implicit val rwZuoraRenewOrderPayloadOrderAction: ReadWriter[ZuoraRenewOrderPayloadOrderAction] = macroRW
}

case class ZuoraRenewOrderPayloadSubscription(
subscriptionNumber: String,
orderActions: List[ZuoraRenewOrderPayloadOrderAction]
)
object ZuoraRenewOrderPayloadSubscription {
implicit val rwZuoraRenewOrderPayloadSubscription: ReadWriter[ZuoraRenewOrderPayloadSubscription] = macroRW
}

case class ZuoraRenewOrderPayloadProcessingOptions(runBilling: Boolean, collectPayment: Boolean)
object ZuoraRenewOrderPayloadProcessingOptions {
implicit val rwZuoraRenewOrderPayloadProcessingOptions: ReadWriter[ZuoraRenewOrderPayloadProcessingOptions] = macroRW
}

case class ZuoraRenewOrderPayload(
orderDate: LocalDate,
existingAccountNumber: String,
subscriptions: List[ZuoraRenewOrderPayloadSubscription],
processingOptions: ZuoraRenewOrderPayloadProcessingOptions
)
object ZuoraRenewOrderPayload {
implicit val rwZuoraRenewOrderPayload: ReadWriter[ZuoraRenewOrderPayload] = macroRW
}
Original file line number Diff line number Diff line change
Expand Up @@ -208,16 +208,59 @@ object ZuoraLive {
)
}

override def renewSubscription(subscriptionNumber: String): ZIO[Any, ZuoraRenewalFailure, Unit] =
override def renewSubscription(subscriptionNumber: String): ZIO[Any, ZuoraRenewalFailure, Unit] = {

val triggerDates = List(
ZuoraRenewOrderPayloadOrderActionTriggerDate(
"ContractEffective",
LocalDate.of(2024, 10, 21)
), // TODO: set correct date
ZuoraRenewOrderPayloadOrderActionTriggerDate(
"ServiceActivation",
LocalDate.of(2024, 10, 21)
), // TODO: set correct date
ZuoraRenewOrderPayloadOrderActionTriggerDate(
"CustomerAcceptance",
LocalDate.of(2024, 10, 21)
), // TODO: set correct date
)

val orderActions = List(
ZuoraRenewOrderPayloadOrderAction(
`type` = "RenewSubscription",
triggerDates = triggerDates
)
)

val subscriptions = List(
ZuoraRenewOrderPayloadSubscription(
subscriptionNumber = subscriptionNumber,
orderActions = orderActions
)
)

val processingOptions = ZuoraRenewOrderPayloadProcessingOptions(runBilling = false, collectPayment = false)

val payload = ZuoraRenewOrderPayload(
orderDate = LocalDate.of(2024, 10, 21), // TODO: set correct date
existingAccountNumber = "A01269270", // TODO: set correct account number
subscriptions = subscriptions,
processingOptions = processingOptions
)

retry(
put[Unit](
path = s"subscriptions/${subscriptionNumber}/renew",
body = "{}"
post[Unit](
path = s"v1/orders/",
body = write(payload)
).mapBoth(
e => ZuoraRenewalFailure(s"Failed to renew subscription number ${subscriptionNumber}"),
e =>
ZuoraRenewalFailure(
s"Failed to renew subscription number ${subscriptionNumber} with payload: ${payload}"
),
response => ()
)
) <* logging.info(s"renewed subscription ${subscriptionNumber}")
}
}
)
}

0 comments on commit 1f47c38

Please sign in to comment.