bug5773: fixed not working cancelation of already covered subscriptions.

This commit is contained in:
Udo Wessels
2023-08-04 15:09:12 +02:00
parent 8bb08de666
commit f21e823a65
4 changed files with 16 additions and 37 deletions
@@ -6,7 +6,6 @@ import java.util.logging.Logger;
import com.chargebee.Result;
import com.chargebee.models.Subscription;
import com.chargebee.models.Subscription.CancelForItemsRequest;
import com.chargebee.models.enums.AccountReceivablesHandling;
import com.chargebee.models.enums.CreditOptionForCurrentTermCharges;
import com.chargebee.models.enums.RefundableCreditsHandling;
import com.sap.sse.security.subscription.SubscriptionApiBaseService;
@@ -37,7 +36,6 @@ public class ChargebeeCancelSubscriptionRequest extends ChargebeeApiRequest {
logger.info(() -> "Cancel Chargebee subscription, subscription id: " + subscriptionId);
CancelForItemsRequest request = Subscription.cancelForItems(subscriptionId)
.creditOptionForCurrentTermCharges(CreditOptionForCurrentTermCharges.PRORATE)
.accountReceivablesHandling(AccountReceivablesHandling.SCHEDULE_PAYMENT_COLLECTION)
.refundableCreditsHandling(RefundableCreditsHandling.SCHEDULE_REFUND)
.endOfTerm(false);
return new ChargebeeInternalApiRequestWrapper(request);
@@ -12,7 +12,7 @@ import com.sap.sse.security.subscription.SubscriptionCancelResult;
* Task to perform canceling a subscription by subscription id
*/
public class ChargebeeCancelSubscriptionTask
implements ChargebeeSubscriptionRequest.OnResultListener, ChargebeeCancelSubscriptionRequest.OnResultListener {
implements ChargebeeCancelSubscriptionRequest.OnResultListener {
private static final Logger logger = Logger.getLogger(ChargebeeCancelSubscriptionTask.class.getName());
/**
@@ -38,44 +38,25 @@ public class ChargebeeCancelSubscriptionTask
public void run() {
logger.info(() -> "Schedule cancel Chargebee subscription, id: " + subscriptionId);
requestProcessor.addRequest(new ChargebeeSubscriptionRequest(subscriptionId, this, requestProcessor, chargebeeApiServiceParams));
requestProcessor.addRequest(new ChargebeeCancelSubscriptionRequest(subscriptionId, this, requestProcessor, chargebeeApiServiceParams));
}
@Override
public void onSubscriptionResult(com.chargebee.models.Subscription subscription) {
if (subscription != null) {
Subscription sub = new ChargebeeApiSubscriptionData(subscription, /* invoice */null, /* transaction */ null)
.toSubscription(chargebeeApiServiceParams.getSubscriptionPlanProvider());
String status = subscription.status().name();
if (status != null) {
status = status.toLowerCase();
}
if (sub.getSubscriptionStatus().equals(ChargebeeSubscription.SUBSCRIPTION_STATUS_CANCELLED)
|| sub.getSubscriptionStatus().equals(ChargebeeSubscription.SUBSCRIPTION_NON_RENEWING)) {
onDone(new SubscriptionCancelResult(/* success */ true, sub));
} else {
requestProcessor.addRequest(new ChargebeeCancelSubscriptionRequest(subscriptionId, this,
requestProcessor, chargebeeApiServiceParams));
}
} else {
onDone(new SubscriptionCancelResult(/* success */false, /* subscription */null, /* deleted */true));
}
}
@Override
public void onSubscriptionCancelResult(com.chargebee.models.Subscription subscription) {
if (subscription != null) {
Subscription sub = (new ChargebeeApiSubscriptionData(subscription, null, null))
.toSubscription(chargebeeApiServiceParams.getSubscriptionPlanProvider());
boolean success = sub.getSubscriptionStatus().equals(ChargebeeSubscription.SUBSCRIPTION_STATUS_CANCELLED)
|| sub.getSubscriptionStatus().equals(ChargebeeSubscription.SUBSCRIPTION_NON_RENEWING);
onDone(new SubscriptionCancelResult(success, sub, /* deleted */ false));
public void onSubscriptionCancelResult(com.chargebee.models.Subscription subscriptionModel) {
if (subscriptionModel != null) {
ChargebeeApiSubscriptionData apiSubscriptionData = new ChargebeeApiSubscriptionData(subscriptionModel, null, null);
Subscription subscription = apiSubscriptionData.toSubscription(chargebeeApiServiceParams.getSubscriptionPlanProvider());
boolean success = subscription.getSubscriptionStatus().equals(ChargebeeSubscription.SUBSCRIPTION_STATUS_CANCELLED);
onDone(new SubscriptionCancelResult(success, subscription, /* deleted */ false));
} else {
onDone(new SubscriptionCancelResult(/* success */false, /* subscription */null, /* deleted */true));
}
}
private void onDone(SubscriptionCancelResult result) {
logger.info("Subscription cancelation is done with success = " + result.isSuccess() +
", deleted = " + result.isDeleted() +
", subscription = " + result.getSubscription());
if (listener != null) {
listener.onCancelResult(result);
}
@@ -74,6 +74,9 @@ public class ChargebeeNonRenewingSubscriptionTask
}
private void onDone(SubscriptionNonRenewingResult result) {
logger.info("Setting subscription to non renewing is done with success = " + result.isSuccess() +
", deleted = " + result.isDeleted() +
", subscription = " + result.getSubscription());
if (listener != null) {
listener.onNonRenewingResult(result);
}