@reorderjs/reorder 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/scripts/reset-reorder-plugin-data.js +175 -0
- package/.medusa/server/src/admin/index.js +17889 -0
- package/.medusa/server/src/admin/index.mjs +17871 -0
- package/.medusa/server/src/admin/types/activity-log.js +10 -0
- package/.medusa/server/src/admin/types/analytics.js +17 -0
- package/.medusa/server/src/admin/types/cancellation.js +27 -0
- package/.medusa/server/src/admin/types/dunning.js +19 -0
- package/.medusa/server/src/admin/types/plan-offer.js +25 -0
- package/.medusa/server/src/admin/types/renewal.js +23 -0
- package/.medusa/server/src/admin/types/subscription.js +22 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/apply-offer/route.js +30 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/finalize/route.js +31 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/reason/route.js +31 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/cancellations/middlewares.js +55 -0
- package/.medusa/server/src/api/admin/cancellations/route.js +20 -0
- package/.medusa/server/src/api/admin/cancellations/utils.js +116 -0
- package/.medusa/server/src/api/admin/cancellations/validators.js +130 -0
- package/.medusa/server/src/api/admin/dunning/[id]/mark-recovered/route.js +27 -0
- package/.medusa/server/src/api/admin/dunning/[id]/mark-unrecovered/route.js +27 -0
- package/.medusa/server/src/api/admin/dunning/[id]/retry-now/route.js +28 -0
- package/.medusa/server/src/api/admin/dunning/[id]/retry-schedule/route.js +29 -0
- package/.medusa/server/src/api/admin/dunning/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/dunning/middlewares.js +60 -0
- package/.medusa/server/src/api/admin/dunning/route.js +20 -0
- package/.medusa/server/src/api/admin/dunning/utils.js +70 -0
- package/.medusa/server/src/api/admin/dunning/validators.js +81 -0
- package/.medusa/server/src/api/admin/orders/[id]/subscription-summary/route.js +10 -0
- package/.medusa/server/src/api/admin/orders/utils.js +8 -0
- package/.medusa/server/src/api/admin/plugin/route.js +7 -0
- package/.medusa/server/src/api/admin/renewals/[id]/approve-changes/route.js +27 -0
- package/.medusa/server/src/api/admin/renewals/[id]/force/route.js +30 -0
- package/.medusa/server/src/api/admin/renewals/[id]/reject-changes/route.js +27 -0
- package/.medusa/server/src/api/admin/renewals/[id]/route.js +10 -0
- package/.medusa/server/src/api/admin/renewals/middlewares.js +61 -0
- package/.medusa/server/src/api/admin/renewals/route.js +10 -0
- package/.medusa/server/src/api/admin/renewals/utils.js +60 -0
- package/.medusa/server/src/api/admin/renewals/validators.js +62 -0
- package/.medusa/server/src/api/admin/subscription-analytics/export/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/kpis/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/middlewares.js +45 -0
- package/.medusa/server/src/api/admin/subscription-analytics/rebuild/route.js +75 -0
- package/.medusa/server/src/api/admin/subscription-analytics/trends/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/utils.js +81 -0
- package/.medusa/server/src/api/admin/subscription-analytics/validators.js +76 -0
- package/.medusa/server/src/api/admin/subscription-logs/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-logs/middlewares.js +66 -0
- package/.medusa/server/src/api/admin/subscription-logs/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-logs/utils.js +84 -0
- package/.medusa/server/src/api/admin/subscription-logs/validators.js +32 -0
- package/.medusa/server/src/api/admin/subscription-offers/[id]/route.js +22 -0
- package/.medusa/server/src/api/admin/subscription-offers/[id]/toggle/route.js +17 -0
- package/.medusa/server/src/api/admin/subscription-offers/middlewares.js +58 -0
- package/.medusa/server/src/api/admin/subscription-offers/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-offers/utils.js +41 -0
- package/.medusa/server/src/api/admin/subscription-offers/validators.js +112 -0
- package/.medusa/server/src/api/admin/subscription-settings/middlewares.js +15 -0
- package/.medusa/server/src/api/admin/subscription-settings/route.js +33 -0
- package/.medusa/server/src/api/admin/subscription-settings/utils.js +109 -0
- package/.medusa/server/src/api/admin/subscription-settings/validators.js +74 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/cancel/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/logs/route.js +20 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/pause/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/resume/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/route.js +10 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/schedule-plan-change/route.js +26 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/update-shipping-address/route.js +27 -0
- package/.medusa/server/src/api/admin/subscriptions/middlewares.js +79 -0
- package/.medusa/server/src/api/admin/subscriptions/route.js +10 -0
- package/.medusa/server/src/api/admin/subscriptions/utils.js +42 -0
- package/.medusa/server/src/api/admin/subscriptions/validators.js +76 -0
- package/.medusa/server/src/api/middlewares.js +32 -0
- package/.medusa/server/src/api/store/carts/[id]/subscribe/route.js +18 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/cancellation/route.js +37 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/route.js +10 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +104 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +13 -0
- package/.medusa/server/src/api/store/plugin/route.js +7 -0
- package/.medusa/server/src/jobs/process-analytics-daily-snapshots.js +149 -0
- package/.medusa/server/src/jobs/process-cancellation-operational-metrics.js +102 -0
- package/.medusa/server/src/jobs/process-dunning-retries.js +249 -0
- package/.medusa/server/src/jobs/process-renewal-cycles.js +180 -0
- package/.medusa/server/src/links/cancellation-subscription.js +13 -0
- package/.medusa/server/src/links/renewal-order.js +12 -0
- package/.medusa/server/src/links/renewal-subscription.js +13 -0
- package/.medusa/server/src/links/subscription-cart.js +12 -0
- package/.medusa/server/src/links/subscription-customer.js +13 -0
- package/.medusa/server/src/links/subscription-order.js +13 -0
- package/.medusa/server/src/links/subscription-product.js +13 -0
- package/.medusa/server/src/links/subscription-variant.js +13 -0
- package/.medusa/server/src/modules/activity-log/index.js +13 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260401204521.js +24 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260405112500.js +16 -0
- package/.medusa/server/src/modules/activity-log/models/subscription-log.js +52 -0
- package/.medusa/server/src/modules/activity-log/service.js +13 -0
- package/.medusa/server/src/modules/activity-log/types/index.js +33 -0
- package/.medusa/server/src/modules/activity-log/utils/admin-query.js +261 -0
- package/.medusa/server/src/modules/activity-log/utils/normalize-log-event.js +169 -0
- package/.medusa/server/src/modules/analytics/constants.js +8 -0
- package/.medusa/server/src/modules/analytics/index.js +13 -0
- package/.medusa/server/src/modules/analytics/migrations/Migration20260402183116.js +27 -0
- package/.medusa/server/src/modules/analytics/models/subscription-metrics-daily.js +65 -0
- package/.medusa/server/src/modules/analytics/service.js +13 -0
- package/.medusa/server/src/modules/analytics/utils/admin-query.js +632 -0
- package/.medusa/server/src/modules/analytics/utils/data-quality.js +101 -0
- package/.medusa/server/src/modules/analytics/utils/observability.js +127 -0
- package/.medusa/server/src/modules/cancellation/index.js +13 -0
- package/.medusa/server/src/modules/cancellation/migrations/Migration20260401143914.js +34 -0
- package/.medusa/server/src/modules/cancellation/migrations/Migration20260405112000.js +14 -0
- package/.medusa/server/src/modules/cancellation/models/cancellation-case.js +52 -0
- package/.medusa/server/src/modules/cancellation/models/retention-offer-event.js +47 -0
- package/.medusa/server/src/modules/cancellation/service.js +15 -0
- package/.medusa/server/src/modules/cancellation/types/index.js +43 -0
- package/.medusa/server/src/modules/cancellation/utils/admin-query.js +530 -0
- package/.medusa/server/src/modules/cancellation/utils/audit.js +21 -0
- package/.medusa/server/src/modules/cancellation/utils/errors.js +31 -0
- package/.medusa/server/src/modules/cancellation/utils/observability.js +77 -0
- package/.medusa/server/src/modules/cancellation/utils/operational-metrics.js +131 -0
- package/.medusa/server/src/modules/cancellation/utils/retention-offer-policy.js +31 -0
- package/.medusa/server/src/modules/dunning/index.js +13 -0
- package/.medusa/server/src/modules/dunning/migrations/Migration20260330190157.js +36 -0
- package/.medusa/server/src/modules/dunning/models/dunning-attempt.js +48 -0
- package/.medusa/server/src/modules/dunning/models/dunning-case.js +61 -0
- package/.medusa/server/src/modules/dunning/service.js +15 -0
- package/.medusa/server/src/modules/dunning/types/index.js +19 -0
- package/.medusa/server/src/modules/dunning/utils/admin-query.js +548 -0
- package/.medusa/server/src/modules/dunning/utils/errors.js +40 -0
- package/.medusa/server/src/modules/dunning/utils/observability.js +109 -0
- package/.medusa/server/src/modules/dunning/utils/retry-schedule.js +47 -0
- package/.medusa/server/src/modules/dunning/utils/scheduler-query.js +42 -0
- package/.medusa/server/src/modules/plan-offer/index.js +13 -0
- package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329104245.js +22 -0
- package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329153000.js +25 -0
- package/.medusa/server/src/modules/plan-offer/models/plan-offer.js +35 -0
- package/.medusa/server/src/modules/plan-offer/service.js +13 -0
- package/.medusa/server/src/modules/plan-offer/types/index.js +26 -0
- package/.medusa/server/src/modules/plan-offer/utils/admin-query.js +429 -0
- package/.medusa/server/src/modules/plan-offer/utils/effective-config.js +84 -0
- package/.medusa/server/src/modules/plan-offer/utils/errors.js +55 -0
- package/.medusa/server/src/modules/renewal/index.js +13 -0
- package/.medusa/server/src/modules/renewal/migrations/Migration20260329185930.js +34 -0
- package/.medusa/server/src/modules/renewal/models/renewal-attempt.js +49 -0
- package/.medusa/server/src/modules/renewal/models/renewal-cycle.js +56 -0
- package/.medusa/server/src/modules/renewal/service.js +15 -0
- package/.medusa/server/src/modules/renewal/types/index.js +23 -0
- package/.medusa/server/src/modules/renewal/utils/admin-query.js +450 -0
- package/.medusa/server/src/modules/renewal/utils/errors.js +39 -0
- package/.medusa/server/src/modules/renewal/utils/observability.js +89 -0
- package/.medusa/server/src/modules/renewal/utils/scheduler-query.js +48 -0
- package/.medusa/server/src/modules/renewal/utils/upcoming-cycle.js +54 -0
- package/.medusa/server/src/modules/settings/index.js +13 -0
- package/.medusa/server/src/modules/settings/migrations/Migration20260403121004.js +17 -0
- package/.medusa/server/src/modules/settings/migrations/Migration20260403132519.js +17 -0
- package/.medusa/server/src/modules/settings/models/subscription-settings.js +32 -0
- package/.medusa/server/src/modules/settings/service.js +82 -0
- package/.medusa/server/src/modules/settings/types.js +15 -0
- package/.medusa/server/src/modules/settings/utils/audit.js +43 -0
- package/.medusa/server/src/modules/settings/utils/normalize-settings.js +99 -0
- package/.medusa/server/src/modules/subscription/index.js +13 -0
- package/.medusa/server/src/modules/subscription/migrations/Migration20260327143452.js +24 -0
- package/.medusa/server/src/modules/subscription/migrations/Migration20260329194835.js +16 -0
- package/.medusa/server/src/modules/subscription/models/subscription.js +64 -0
- package/.medusa/server/src/modules/subscription/service.js +13 -0
- package/.medusa/server/src/modules/subscription/types/index.js +17 -0
- package/.medusa/server/src/modules/subscription/utils/admin-query.js +465 -0
- package/.medusa/server/src/modules/subscription/utils/errors.js +28 -0
- package/.medusa/server/src/subscription-flows/create-subscription-from-cart.js +178 -0
- package/.medusa/server/src/workflows/apply-retention-offer.js +52 -0
- package/.medusa/server/src/workflows/approve-renewal-changes.js +61 -0
- package/.medusa/server/src/workflows/cancel-subscription.js +64 -0
- package/.medusa/server/src/workflows/create-or-upsert-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/ensure-next-renewal-cycle.js +11 -0
- package/.medusa/server/src/workflows/finalize-cancellation.js +88 -0
- package/.medusa/server/src/workflows/force-renewal-cycle.js +11 -0
- package/.medusa/server/src/workflows/index.js +79 -0
- package/.medusa/server/src/workflows/mark-dunning-recovered.js +11 -0
- package/.medusa/server/src/workflows/mark-dunning-unrecovered.js +11 -0
- package/.medusa/server/src/workflows/pause-subscription.js +61 -0
- package/.medusa/server/src/workflows/process-renewal-cycle.js +43 -0
- package/.medusa/server/src/workflows/rebuild-analytics-daily-snapshots.js +13 -0
- package/.medusa/server/src/workflows/reject-renewal-changes.js +61 -0
- package/.medusa/server/src/workflows/resume-subscription.js +76 -0
- package/.medusa/server/src/workflows/run-dunning-retry.js +23 -0
- package/.medusa/server/src/workflows/schedule-subscription-plan-change.js +57 -0
- package/.medusa/server/src/workflows/start-cancellation-case.js +58 -0
- package/.medusa/server/src/workflows/start-dunning.js +11 -0
- package/.medusa/server/src/workflows/steps/apply-retention-offer.js +200 -0
- package/.medusa/server/src/workflows/steps/approve-renewal-changes.js +48 -0
- package/.medusa/server/src/workflows/steps/cancel-subscription.js +48 -0
- package/.medusa/server/src/workflows/steps/create-initial-renewal-cycle.js +6 -0
- package/.medusa/server/src/workflows/steps/create-subscription-log-event.js +61 -0
- package/.medusa/server/src/workflows/steps/create-subscription-record.js +56 -0
- package/.medusa/server/src/workflows/steps/ensure-next-renewal-cycle.js +151 -0
- package/.medusa/server/src/workflows/steps/finalize-cancellation.js +161 -0
- package/.medusa/server/src/workflows/steps/force-renewal-cycle.js +120 -0
- package/.medusa/server/src/workflows/steps/link-subscription-commerce-entities.js +44 -0
- package/.medusa/server/src/workflows/steps/mark-dunning-recovered.js +72 -0
- package/.medusa/server/src/workflows/steps/mark-dunning-unrecovered.js +53 -0
- package/.medusa/server/src/workflows/steps/normalize-analytics-rebuild-range.js +59 -0
- package/.medusa/server/src/workflows/steps/pause-subscription.js +50 -0
- package/.medusa/server/src/workflows/steps/process-renewal-cycle.js +641 -0
- package/.medusa/server/src/workflows/steps/rebuild-analytics-daily-snapshots.js +519 -0
- package/.medusa/server/src/workflows/steps/reject-renewal-changes.js +48 -0
- package/.medusa/server/src/workflows/steps/resume-subscription.js +45 -0
- package/.medusa/server/src/workflows/steps/run-dunning-retry.js +592 -0
- package/.medusa/server/src/workflows/steps/schedule-subscription-plan-change.js +81 -0
- package/.medusa/server/src/workflows/steps/shared-cancellation-log.js +3 -0
- package/.medusa/server/src/workflows/steps/shared-plan-offer.js +280 -0
- package/.medusa/server/src/workflows/steps/shared-renewal-approval.js +34 -0
- package/.medusa/server/src/workflows/steps/start-cancellation-case.js +147 -0
- package/.medusa/server/src/workflows/steps/start-dunning.js +237 -0
- package/.medusa/server/src/workflows/steps/toggle-plan-offer.js +33 -0
- package/.medusa/server/src/workflows/steps/update-cancellation-reason.js +95 -0
- package/.medusa/server/src/workflows/steps/update-dunning-retry-schedule.js +91 -0
- package/.medusa/server/src/workflows/steps/update-plan-offer.js +51 -0
- package/.medusa/server/src/workflows/steps/update-subscription-settings.js +91 -0
- package/.medusa/server/src/workflows/steps/update-subscription-shipping-address.js +54 -0
- package/.medusa/server/src/workflows/steps/upsert-plan-offer.js +48 -0
- package/.medusa/server/src/workflows/steps/validate-subscription-cart.js +280 -0
- package/.medusa/server/src/workflows/toggle-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/update-cancellation-reason.js +53 -0
- package/.medusa/server/src/workflows/update-dunning-retry-schedule.js +11 -0
- package/.medusa/server/src/workflows/update-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/update-subscription-settings.js +11 -0
- package/.medusa/server/src/workflows/update-subscription-shipping-address.js +99 -0
- package/.medusa/server/src/workflows/utils/analytics-incremental.js +24 -0
- package/.medusa/server/src/workflows/utils/date-output.js +13 -0
- package/.medusa/server/src/workflows/utils/subscription-settings.js +13 -0
- package/LICENSE +21 -0
- package/README.md +200 -0
- package/package.json +73 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyRetentionOfferStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const cancellation_1 = require("../../modules/cancellation");
|
|
6
|
+
const types_1 = require("../../modules/cancellation/types");
|
|
7
|
+
const audit_1 = require("../../modules/cancellation/utils/audit");
|
|
8
|
+
const errors_1 = require("../../modules/cancellation/utils/errors");
|
|
9
|
+
const retention_offer_policy_1 = require("../../modules/cancellation/utils/retention-offer-policy");
|
|
10
|
+
const dunning_1 = require("../../modules/dunning");
|
|
11
|
+
const subscription_1 = require("../../modules/subscription");
|
|
12
|
+
const types_2 = require("../../modules/subscription/types");
|
|
13
|
+
const APPLIABLE_CANCELLATION_CASE_STATUSES = new Set([
|
|
14
|
+
types_1.CancellationCaseStatus.EVALUATING_RETENTION,
|
|
15
|
+
types_1.CancellationCaseStatus.RETENTION_OFFERED,
|
|
16
|
+
types_1.CancellationCaseStatus.REQUESTED,
|
|
17
|
+
]);
|
|
18
|
+
async function loadCancellationCase(container, id) {
|
|
19
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
20
|
+
try {
|
|
21
|
+
return (await cancellationModule.retrieveCancellationCase(id));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw errors_1.cancellationErrors.notFound("CancellationCase", id);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function loadSubscription(container, id) {
|
|
28
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
29
|
+
return (await subscriptionModule.retrieveSubscription(id));
|
|
30
|
+
}
|
|
31
|
+
async function loadActiveDunningCase(container, subscriptionId) {
|
|
32
|
+
const dunningModule = container.resolve(dunning_1.DUNNING_MODULE);
|
|
33
|
+
const dunningCases = (await dunningModule.listDunningCases({
|
|
34
|
+
subscription_id: subscriptionId,
|
|
35
|
+
}));
|
|
36
|
+
return dunningCases.find((dunningCase) => (0, retention_offer_policy_1.isActiveDunningCase)(dunningCase.status));
|
|
37
|
+
}
|
|
38
|
+
function validateCaseState(cancellationCase) {
|
|
39
|
+
if (cancellationCase.finalized_at) {
|
|
40
|
+
throw errors_1.cancellationErrors.alreadyFinalized(cancellationCase.id, cancellationCase.status);
|
|
41
|
+
}
|
|
42
|
+
if (!APPLIABLE_CANCELLATION_CASE_STATUSES.has(cancellationCase.status)) {
|
|
43
|
+
throw errors_1.cancellationErrors.invalidCaseState(cancellationCase.id, "apply retention offer", cancellationCase.status);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function validateOfferPayload(offerType, offerPayload) {
|
|
47
|
+
if (offerType === types_1.RetentionOfferType.PAUSE_OFFER) {
|
|
48
|
+
if (!("pause_offer" in offerPayload)) {
|
|
49
|
+
throw errors_1.cancellationErrors.invalidData("Pause offer payload must include 'pause_offer'");
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (offerType === types_1.RetentionOfferType.DISCOUNT_OFFER) {
|
|
54
|
+
if (!("discount_offer" in offerPayload)) {
|
|
55
|
+
throw errors_1.cancellationErrors.invalidData("Discount offer payload must include 'discount_offer'");
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (offerType === types_1.RetentionOfferType.BONUS_OFFER) {
|
|
60
|
+
if (!("bonus_offer" in offerPayload)) {
|
|
61
|
+
throw errors_1.cancellationErrors.invalidData("Bonus offer payload must include 'bonus_offer'");
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
throw errors_1.cancellationErrors.invalidData(`Unsupported retention offer '${offerType}'`);
|
|
66
|
+
}
|
|
67
|
+
function validateOfferPolicy(params) {
|
|
68
|
+
const eligibleOfferTypes = (0, retention_offer_policy_1.getEligibleRetentionOfferTypes)({
|
|
69
|
+
subscription_status: params.subscription.status,
|
|
70
|
+
has_active_dunning: Boolean(params.activeDunningCase),
|
|
71
|
+
});
|
|
72
|
+
if (!eligibleOfferTypes.includes(params.offerType)) {
|
|
73
|
+
throw errors_1.cancellationErrors.offerOutOfPolicy(params.cancellationCase.id, params.offerType);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function buildAppliedRetentionMetadata(subscription, input, appliedAt) {
|
|
77
|
+
const base = {
|
|
78
|
+
...(subscription.metadata ?? {}),
|
|
79
|
+
applied_retention_offer: {
|
|
80
|
+
offer_type: input.offer_type,
|
|
81
|
+
offer_payload: input.offer_payload,
|
|
82
|
+
decided_by: input.decided_by ?? null,
|
|
83
|
+
decision_reason: input.decision_reason ?? null,
|
|
84
|
+
applied_at: appliedAt.toISOString(),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
return (0, audit_1.appendCancellationManualAction)(base, {
|
|
88
|
+
action: "apply_offer",
|
|
89
|
+
who: input.decided_by ?? null,
|
|
90
|
+
when: appliedAt.toISOString(),
|
|
91
|
+
why: input.decision_reason ?? null,
|
|
92
|
+
data: {
|
|
93
|
+
offer_type: input.offer_type,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
exports.applyRetentionOfferStep = (0, workflows_sdk_1.createStep)("apply-retention-offer", async function (input, { container }) {
|
|
98
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
99
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
100
|
+
const cancellationCase = await loadCancellationCase(container, input.cancellation_case_id);
|
|
101
|
+
validateCaseState(cancellationCase);
|
|
102
|
+
validateOfferPayload(input.offer_type, input.offer_payload);
|
|
103
|
+
const subscription = await loadSubscription(container, cancellationCase.subscription_id);
|
|
104
|
+
const activeDunningCase = await loadActiveDunningCase(container, cancellationCase.subscription_id);
|
|
105
|
+
validateOfferPolicy({
|
|
106
|
+
cancellationCase,
|
|
107
|
+
subscription,
|
|
108
|
+
activeDunningCase,
|
|
109
|
+
offerType: input.offer_type,
|
|
110
|
+
});
|
|
111
|
+
const appliedAt = new Date();
|
|
112
|
+
const finalCaseStatus = input.offer_type === types_1.RetentionOfferType.PAUSE_OFFER
|
|
113
|
+
? types_1.CancellationCaseStatus.PAUSED
|
|
114
|
+
: types_1.CancellationCaseStatus.RETAINED;
|
|
115
|
+
const finalOutcome = input.offer_type === types_1.RetentionOfferType.PAUSE_OFFER
|
|
116
|
+
? types_1.CancellationFinalOutcome.PAUSED
|
|
117
|
+
: types_1.CancellationFinalOutcome.RETAINED;
|
|
118
|
+
const createdEvent = (await cancellationModule.createRetentionOfferEvents({
|
|
119
|
+
cancellation_case_id: cancellationCase.id,
|
|
120
|
+
offer_type: input.offer_type,
|
|
121
|
+
offer_payload: input.offer_payload,
|
|
122
|
+
decision_status: types_1.RetentionOfferDecisionStatus.APPLIED,
|
|
123
|
+
decision_reason: input.decision_reason ?? null,
|
|
124
|
+
decided_at: appliedAt,
|
|
125
|
+
decided_by: input.decided_by ?? null,
|
|
126
|
+
applied_at: appliedAt,
|
|
127
|
+
metadata: {
|
|
128
|
+
...(input.metadata ?? {}),
|
|
129
|
+
source: "apply_retention_offer_workflow",
|
|
130
|
+
},
|
|
131
|
+
}));
|
|
132
|
+
if (input.offer_type === types_1.RetentionOfferType.PAUSE_OFFER) {
|
|
133
|
+
await subscriptionModule.updateSubscriptions({
|
|
134
|
+
id: subscription.id,
|
|
135
|
+
status: types_2.SubscriptionStatus.PAUSED,
|
|
136
|
+
paused_at: appliedAt,
|
|
137
|
+
cancel_effective_at: null,
|
|
138
|
+
metadata: buildAppliedRetentionMetadata(subscription, input, appliedAt),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
await subscriptionModule.updateSubscriptions({
|
|
143
|
+
id: subscription.id,
|
|
144
|
+
metadata: buildAppliedRetentionMetadata(subscription, input, appliedAt),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
await cancellationModule.updateCancellationCases({
|
|
148
|
+
id: cancellationCase.id,
|
|
149
|
+
status: finalCaseStatus,
|
|
150
|
+
final_outcome: finalOutcome,
|
|
151
|
+
finalized_at: appliedAt,
|
|
152
|
+
finalized_by: input.decided_by ?? null,
|
|
153
|
+
metadata: (0, audit_1.appendCancellationManualAction)({
|
|
154
|
+
...(cancellationCase.metadata ?? {}),
|
|
155
|
+
...(input.metadata ?? {}),
|
|
156
|
+
applied_retention_offer: {
|
|
157
|
+
event_id: createdEvent.id,
|
|
158
|
+
offer_type: input.offer_type,
|
|
159
|
+
final_outcome: finalOutcome,
|
|
160
|
+
applied_at: appliedAt.toISOString(),
|
|
161
|
+
},
|
|
162
|
+
}, {
|
|
163
|
+
action: "apply_offer",
|
|
164
|
+
who: input.decided_by ?? null,
|
|
165
|
+
when: appliedAt.toISOString(),
|
|
166
|
+
why: input.decision_reason ?? null,
|
|
167
|
+
data: {
|
|
168
|
+
event_id: createdEvent.id,
|
|
169
|
+
offer_type: input.offer_type,
|
|
170
|
+
final_outcome: finalOutcome,
|
|
171
|
+
},
|
|
172
|
+
}),
|
|
173
|
+
});
|
|
174
|
+
const updatedCase = (await cancellationModule.retrieveCancellationCase(cancellationCase.id));
|
|
175
|
+
return new workflows_sdk_1.StepResponse({
|
|
176
|
+
current: updatedCase,
|
|
177
|
+
previous: cancellationCase,
|
|
178
|
+
subscription: subscription,
|
|
179
|
+
cancellation_case_id: cancellationCase.id,
|
|
180
|
+
retention_offer_event_id: createdEvent.id,
|
|
181
|
+
subscription_id: subscription.id,
|
|
182
|
+
offer_type: input.offer_type,
|
|
183
|
+
final_case_status: finalCaseStatus,
|
|
184
|
+
final_outcome: finalOutcome,
|
|
185
|
+
}, {
|
|
186
|
+
previous_case: cancellationCase,
|
|
187
|
+
previous_subscription: subscription,
|
|
188
|
+
created_event_id: createdEvent.id,
|
|
189
|
+
});
|
|
190
|
+
}, async function (compensation, { container }) {
|
|
191
|
+
if (!compensation) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
195
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
196
|
+
await cancellationModule.deleteRetentionOfferEvents(compensation.created_event_id);
|
|
197
|
+
await cancellationModule.updateCancellationCases(compensation.previous_case);
|
|
198
|
+
await subscriptionModule.updateSubscriptions(compensation.previous_subscription);
|
|
199
|
+
});
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcmV0ZW50aW9uLW9mZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9hcHBseS1yZXRlbnRpb24tb2ZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBQzVFLDZEQUFnRTtBQUVoRSw0REFPeUM7QUFDekMsa0VBQXVGO0FBQ3ZGLG9FQUE0RTtBQUM1RSxvR0FHZ0U7QUFDaEUsbURBQXNEO0FBR3RELDZEQUFnRTtBQUVoRSw0REFBcUU7QUFHckUsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLEdBQUcsQ0FBeUI7SUFDM0UsOEJBQXNCLENBQUMsb0JBQW9CO0lBQzNDLDhCQUFzQixDQUFDLGlCQUFpQjtJQUN4Qyw4QkFBc0IsQ0FBQyxTQUFTO0NBQ2pDLENBQUMsQ0FBQTtBQXdFRixLQUFLLFVBQVUsb0JBQW9CLENBQ2pDLFNBQTRDLEVBQzVDLEVBQVU7SUFFVixNQUFNLGtCQUFrQixHQUN0QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUE4QixDQUFBO0lBRXJFLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxNQUFNLGtCQUFrQixDQUFDLHdCQUF3QixDQUN2RCxFQUFFLENBQ0gsQ0FBMkIsQ0FBQTtJQUM5QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSwyQkFBa0IsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQzdCLFNBQTRDLEVBQzVDLEVBQVU7SUFFVixNQUFNLGtCQUFrQixHQUN0QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUE4QixDQUFBO0lBRXJFLE9BQU8sQ0FBQyxNQUFNLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUF1QixDQUFBO0FBQ2xGLENBQUM7QUFFRCxLQUFLLFVBQVUs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
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.approveRenewalChangesStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const subscription_1 = require("../../modules/subscription");
|
|
6
|
+
const renewal_1 = require("../../modules/renewal");
|
|
7
|
+
const types_1 = require("../../modules/renewal/types");
|
|
8
|
+
const shared_renewal_approval_1 = require("./shared-renewal-approval");
|
|
9
|
+
exports.approveRenewalChangesStep = (0, workflows_sdk_1.createStep)("approve-renewal-changes", async function (input, { container }) {
|
|
10
|
+
const cycle = await (0, shared_renewal_approval_1.getRenewalCycleApprovalRecord)(container, input.renewal_cycle_id);
|
|
11
|
+
(0, shared_renewal_approval_1.validateRenewalApprovalTransition)(cycle, types_1.RenewalApprovalStatus.APPROVED);
|
|
12
|
+
const renewalModule = container.resolve(renewal_1.RENEWAL_MODULE);
|
|
13
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
14
|
+
const decidedAt = new Date();
|
|
15
|
+
const subscription = (await subscriptionModule.retrieveSubscription(cycle.subscription_id));
|
|
16
|
+
const updated = await renewalModule.updateRenewalCycles({
|
|
17
|
+
id: cycle.id,
|
|
18
|
+
approval_status: types_1.RenewalApprovalStatus.APPROVED,
|
|
19
|
+
approval_decided_at: decidedAt,
|
|
20
|
+
approval_decided_by: input.decided_by ?? null,
|
|
21
|
+
approval_reason: input.reason ?? null,
|
|
22
|
+
});
|
|
23
|
+
return new workflows_sdk_1.StepResponse({
|
|
24
|
+
current: updated,
|
|
25
|
+
previous: {
|
|
26
|
+
id: cycle.id,
|
|
27
|
+
subscription_id: cycle.subscription_id,
|
|
28
|
+
approval_status: cycle.approval_status,
|
|
29
|
+
approval_decided_at: cycle.approval_decided_at,
|
|
30
|
+
approval_decided_by: cycle.approval_decided_by,
|
|
31
|
+
approval_reason: cycle.approval_reason,
|
|
32
|
+
},
|
|
33
|
+
subscription,
|
|
34
|
+
}, {
|
|
35
|
+
id: cycle.id,
|
|
36
|
+
approval_status: cycle.approval_status,
|
|
37
|
+
approval_decided_at: cycle.approval_decided_at,
|
|
38
|
+
approval_decided_by: cycle.approval_decided_by,
|
|
39
|
+
approval_reason: cycle.approval_reason,
|
|
40
|
+
});
|
|
41
|
+
}, async function (previous, { container }) {
|
|
42
|
+
if (!previous) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const renewalModule = container.resolve(renewal_1.RENEWAL_MODULE);
|
|
46
|
+
await renewalModule.updateRenewalCycles(previous);
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1yZW5ld2FsLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2FwcHJvdmUtcmVuZXdhbC1jaGFuZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSw2REFBZ0U7QUFFaEUsbURBQXNEO0FBRXRELHVEQUFtRTtBQUNuRSx1RUFHa0M7QUEyQ3JCLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCx5QkFBeUIsRUFDekIsS0FBSyxXQUFXLEtBQXFDLEVBQUUsRUFBRSxTQUFTLEVBQUU7SUFDbEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHVEQUE2QixFQUMvQyxTQUFTLEVBQ1QsS0FBSyxDQUFDLGdCQUFnQixDQUN2QixDQUFBO0lBRUQsSUFBQSwyREFBaUMsRUFBQyxLQUFLLEVBQUUsNkJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFeEUsTUFBTSxhQUFhLEdBQ2pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBeUIsQ0FBQTtJQUMzRCxNQUFNLGtCQUFrQixHQUN0QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUE4QixDQUFBO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDNUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLG9CQUFvQixDQUNqRSxLQUFLLENBQUMsZUFBZSxDQUN0QixDQUE0QyxDQUFBO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLG1CQUFtQixDQUFDO1FBQ3RELEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNaLGVBQWUsRUFBRSw2QkFBcUIsQ0FBQyxRQUFRO1FBQy9DLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJO1FBQzdDLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7S0FDdEMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBSXJCO1FBQ0UsT0FBTyxFQUFFLE9BQW1EO1FBQzVELFFBQVEsRUFBRTtZQUNSLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNaLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUN0QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQzlDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtTQUN2QztRQUNELFlBQVk7S0FDYixFQUNEO1FBQ0UsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1FBQ3RDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtRQUM5QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7S0FDdkMsQ0FDRixDQUFBO0FBQ0gsQ0FBQyxFQUNELEtBQUssV0FBVyxRQUEwQyxFQUFFLEVBQUUsU0FBUyxFQUFFO0lBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQ2pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBeUIsQ0FBQTtJQUUzRCxNQUFNLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNuRCxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cancelSubscriptionStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const subscription_1 = require("../../modules/subscription");
|
|
6
|
+
const types_1 = require("../../modules/subscription/types");
|
|
7
|
+
const errors_1 = require("../../modules/subscription/utils/errors");
|
|
8
|
+
const pause_subscription_1 = require("./pause-subscription");
|
|
9
|
+
exports.cancelSubscriptionStep = (0, workflows_sdk_1.createStep)("cancel-subscription", async function (input, { container }) {
|
|
10
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
11
|
+
const subscription = await subscriptionModuleService.retrieveSubscription(input.id);
|
|
12
|
+
if (subscription.status !== types_1.SubscriptionStatus.ACTIVE &&
|
|
13
|
+
subscription.status !== types_1.SubscriptionStatus.PAUSED &&
|
|
14
|
+
subscription.status !== types_1.SubscriptionStatus.PAST_DUE) {
|
|
15
|
+
throw errors_1.subscriptionErrors.invalidState(input.id, "be cancelled", subscription.status);
|
|
16
|
+
}
|
|
17
|
+
const cancelledAt = new Date();
|
|
18
|
+
const cancelEffectiveAt = input.effective_at === "end_of_cycle" && subscription.next_renewal_at
|
|
19
|
+
? subscription.next_renewal_at
|
|
20
|
+
: cancelledAt;
|
|
21
|
+
const updated = await subscriptionModuleService.updateSubscriptions({
|
|
22
|
+
id: input.id,
|
|
23
|
+
status: types_1.SubscriptionStatus.CANCELLED,
|
|
24
|
+
cancelled_at: cancelledAt,
|
|
25
|
+
cancel_effective_at: cancelEffectiveAt,
|
|
26
|
+
next_renewal_at: null,
|
|
27
|
+
metadata: {
|
|
28
|
+
...(subscription.metadata ?? {}),
|
|
29
|
+
cancel_context: {
|
|
30
|
+
reason: input.reason ?? null,
|
|
31
|
+
effective_at: input.effective_at ?? "immediately",
|
|
32
|
+
cancelled_at: cancelledAt.toISOString(),
|
|
33
|
+
triggered_by: input.triggered_by ?? null,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
return new workflows_sdk_1.StepResponse({
|
|
38
|
+
current: (0, pause_subscription_1.asSubscriptionWorkflowRecord)(updated),
|
|
39
|
+
previous: (0, pause_subscription_1.asSubscriptionWorkflowRecord)(subscription),
|
|
40
|
+
}, (0, pause_subscription_1.asSubscriptionWorkflowRecord)(subscription));
|
|
41
|
+
}, async function (subscription, { container }) {
|
|
42
|
+
if (!subscription) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
46
|
+
await subscriptionModuleService.updateSubscriptions((0, pause_subscription_1.asSubscriptionUpdateInput)(subscription));
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLXN1YnNjcmlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvY2FuY2VsLXN1YnNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsNkRBQWdFO0FBRWhFLDREQUFxRTtBQUNyRSxvRUFBNEU7QUFDNUUsNkRBSzZCO0FBU2hCLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUM5QyxxQkFBcUIsRUFDckIsS0FBSyxXQUFXLEtBQWtDLEVBQUUsRUFBRSxTQUFTLEVBQUU7SUFDL0QsTUFBTSx5QkFBeUIsR0FDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQ0FBbUIsQ0FBQyxDQUFBO0lBRXhDLE1BQU0sWUFBWSxHQUFHLE1BQU0seUJBQXlCLENBQUMsb0JBQW9CLENBQ3ZFLEtBQUssQ0FBQyxFQUFFLENBQ1QsQ0FBQTtJQUVELElBQ0UsWUFBWSxDQUFDLE1BQU0sS0FBSywwQkFBa0IsQ0FBQyxNQUFNO1FBQ2pELFlBQVksQ0FBQyxNQUFNLEtBQUssMEJBQWtCLENBQUMsTUFBTTtRQUNqRCxZQUFZLENBQUMsTUFBTSxLQUFLLDBCQUFrQixDQUFDLFFBQVEsRUFDbkQsQ0FBQztRQUNELE1BQU0sMkJBQWtCLENBQUMsWUFBWSxDQUNuQyxLQUFLLENBQUMsRUFBRSxFQUNSLGNBQWMsRUFDZCxZQUFZLENBQUMsTUFBTSxDQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDOUIsTUFBTSxpQkFBaUIsR0FDckIsS0FBSyxDQUFDLFlBQVksS0FBSyxjQUFjLElBQUksWUFBWSxDQUFDLGVBQWU7UUFDbkUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxlQUFlO1FBQzlCLENBQUMsQ0FBQyxXQUFXLENBQUE7SUFFakIsTUFBTSxPQUFPLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQztRQUNsRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixNQUFNLEVBQUUsMEJBQWtCLENBQUMsU0FBUztRQUNwQyxZQUFZLEVBQUUsV0FBVztRQUN6QixtQkFBbUIsRUFBRSxpQkFBaUI7UUFDdEMsZUFBZSxFQUFFLElBQUk7UUFDckIsUUFBUSxFQUFFO1lBQ1IsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2hDLGNBQWMsRUFBRTtnQkFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUM1QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxhQUFhO2dCQUNqRCxZQUFZLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDdkMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSTthQUN6QztTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBQ3JCO1FBQ0UsT0FBTyxFQUFFLElBQUEsaURBQTRCLEVBQUMsT0FBTyxDQUFDO1FBQzlDLFFBQVEsRUFBRSxJQUFBLGlEQUE0QixFQUFDLFlBQVksQ0FBQztLQUNyRCxFQUNELElBQUEsaURBQTRCLEVBQUMsWUFBWSxDQUFDLENBQzNDLENBQUE7QUFDSCxDQUFDLEVBQ0QsS0FBSyxXQUFXLFlBQXdDLEVBQUUsRUFBRSxTQUFTLEVBQUU7SUFDckUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSx5QkFBeUIsR0FDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQ0FBbUIsQ0FBQyxDQUFBO0lBRXhDLE1BQU0seUJBQXlCLENBQUMsbUJBQW1CLENBQ2pELElBQUEsOENBQXlCLEVBQUMsWUFBWSxDQUFDLENBQ3hDLENBQUE7QUFDSCxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInitialRenewalCycleStep = void 0;
|
|
4
|
+
var ensure_next_renewal_cycle_1 = require("./ensure-next-renewal-cycle");
|
|
5
|
+
Object.defineProperty(exports, "createInitialRenewalCycleStep", { enumerable: true, get: function () { return ensure_next_renewal_cycle_1.ensureNextRenewalCycleStep; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluaXRpYWwtcmVuZXdhbC1jeWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvY3JlYXRlLWluaXRpYWwtcmVuZXdhbC1jeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFHb0M7QUFGbEMsMElBQUEsMEJBQTBCLE9BQWlDIn0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSubscriptionLogEventStep = void 0;
|
|
4
|
+
exports.persistSubscriptionLogEvent = persistSubscriptionLogEvent;
|
|
5
|
+
exports.createSubscriptionLogEventStepHandler = createSubscriptionLogEventStepHandler;
|
|
6
|
+
exports.compensateCreateSubscriptionLogEventStep = compensateCreateSubscriptionLogEventStep;
|
|
7
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
8
|
+
const activity_log_1 = require("../../modules/activity-log");
|
|
9
|
+
function isDuplicateDedupeKeyError(error) {
|
|
10
|
+
if (!error || typeof error !== "object") {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const code = "code" in error ? error.code : undefined;
|
|
14
|
+
const message = "message" in error ? error.message : undefined;
|
|
15
|
+
if (code === "23505") {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
if (typeof message === "string" && message.includes("dedupe_key")) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
async function persistSubscriptionLogEvent(container, logEvent) {
|
|
24
|
+
const activityLogModule = container.resolve(activity_log_1.ACTIVITY_LOG_MODULE);
|
|
25
|
+
try {
|
|
26
|
+
const created = (await activityLogModule.createSubscriptionLogs(logEvent));
|
|
27
|
+
return {
|
|
28
|
+
record: created,
|
|
29
|
+
action: "created",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (!isDuplicateDedupeKeyError(error)) {
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
record: logEvent,
|
|
38
|
+
action: "existing",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function createSubscriptionLogEventStepHandler(input, { container }) {
|
|
43
|
+
const result = await persistSubscriptionLogEvent(container, input.log_event);
|
|
44
|
+
return new workflows_sdk_1.StepResponse(result.record, result.action === "created"
|
|
45
|
+
? {
|
|
46
|
+
action: "created",
|
|
47
|
+
subscription_log_id: result.record.id,
|
|
48
|
+
}
|
|
49
|
+
: {
|
|
50
|
+
action: "existing",
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async function compensateCreateSubscriptionLogEventStep(compensation, { container }) {
|
|
54
|
+
if (!compensation || compensation.action !== "created") {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const activityLogModule = container.resolve(activity_log_1.ACTIVITY_LOG_MODULE);
|
|
58
|
+
await activityLogModule.deleteSubscriptionLogs(compensation.subscription_log_id);
|
|
59
|
+
}
|
|
60
|
+
exports.createSubscriptionLogEventStep = (0, workflows_sdk_1.createStep)("create-subscription-log-event", createSubscriptionLogEventStepHandler, compensateCreateSubscriptionLogEventStep);
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN1YnNjcmlwdGlvbi1sb2ctZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2NyZWF0ZS1zdWJzY3JpcHRpb24tbG9nLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThDQSxrRUE2QkM7QUFFRCxzRkFvQkM7QUFFRCw0RkFZQztBQS9HRCxxRUFBNEU7QUFDNUUsNkRBRW1DO0FBd0JuQyxTQUFTLHlCQUF5QixDQUFDLEtBQWM7SUFDL0MsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDckQsTUFBTSxPQUFPLEdBQUcsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRTlELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFTSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFNBQTRDLEVBQzVDLFFBQW9DO0lBS3BDLE1BQU0saUJBQWlCLEdBQ3JCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQTZCLENBQUE7SUFFcEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLHNCQUFzQixDQUM3RCxRQUFlLENBQ2hCLENBQTBCLENBQUE7UUFFM0IsT0FBTztZQUNMLE1BQU0sRUFBRSxPQUFPO1lBQ2YsTUFBTSxFQUFFLFNBQVM7U0FDbEIsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsT0FBTztZQUNMLE1BQU0sRUFBRSxRQUFpQztZQUN6QyxNQUFNLEVBQUUsVUFBVTtTQUNuQixDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUscUNBQXFDLENBQ3pELEtBQTBDLEVBQzFDLEVBQUUsU0FBUyxFQUFvRDtJQUUvRCxNQUFNLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFNUUsT0FBTyxJQUFJLDRCQUFZLENBSXJCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTO1FBQ3pCLENBQUMsQ0FBQztZQUNFLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtTQUN0QztRQUNILENBQUMsQ0FBQztZQUNFLE1BQU0sRUFBRSxVQUFVO1NBQ25CLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsd0NBQXdDLENBQzVELFlBQW9ELEVBQ3BELEVBQUUsU0FBUyxFQUFvRDtJQUUvRCxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkQsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUNyQixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUE2QixDQUFBO0lBRXBFLE1BQU0saUJBQWlCLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDbEYsQ0FBQztBQUVZLFFBQUEsOEJBQThCLEdBQUcsSUFBQSwwQkFBVSxFQUN0RCwrQkFBK0IsRUFDL0IscUNBQXFDLEVBQ3JDLHdDQUF3QyxDQUN6QyxDQUFBIn0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSubscriptionRecordStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const subscription_1 = require("../../modules/subscription");
|
|
6
|
+
const types_1 = require("../../modules/subscription/types");
|
|
7
|
+
exports.createSubscriptionRecordStep = (0, workflows_sdk_1.createStep)("create-subscription-record", async function (input, { container }) {
|
|
8
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
9
|
+
const created = await subscriptionModule.createSubscriptions({
|
|
10
|
+
reference: buildSubscriptionReference(input.order_display_id, input.order_id),
|
|
11
|
+
status: types_1.SubscriptionStatus.ACTIVE,
|
|
12
|
+
customer_id: input.customer_id,
|
|
13
|
+
cart_id: input.cart_id,
|
|
14
|
+
product_id: input.product_snapshot.product_id,
|
|
15
|
+
variant_id: input.product_snapshot.variant_id,
|
|
16
|
+
frequency_interval: input.frequency_interval,
|
|
17
|
+
frequency_value: input.frequency_value,
|
|
18
|
+
started_at: new Date(input.started_at),
|
|
19
|
+
next_renewal_at: input.next_renewal_at
|
|
20
|
+
? new Date(input.next_renewal_at)
|
|
21
|
+
: null,
|
|
22
|
+
last_renewal_at: null,
|
|
23
|
+
paused_at: null,
|
|
24
|
+
cancelled_at: null,
|
|
25
|
+
cancel_effective_at: null,
|
|
26
|
+
skip_next_cycle: false,
|
|
27
|
+
is_trial: input.is_trial,
|
|
28
|
+
trial_ends_at: input.trial_ends_at ? new Date(input.trial_ends_at) : null,
|
|
29
|
+
customer_snapshot: input.customer_snapshot,
|
|
30
|
+
product_snapshot: input.product_snapshot,
|
|
31
|
+
pricing_snapshot: input.pricing_snapshot,
|
|
32
|
+
shipping_address: input.shipping_address,
|
|
33
|
+
payment_context: input.payment_context,
|
|
34
|
+
pending_update_data: null,
|
|
35
|
+
metadata: {
|
|
36
|
+
source: "store_cart_subscribe",
|
|
37
|
+
source_order_id: input.order_id,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return new workflows_sdk_1.StepResponse({
|
|
41
|
+
id: created.id,
|
|
42
|
+
}, created.id);
|
|
43
|
+
}, async function (subscriptionId, { container }) {
|
|
44
|
+
if (!subscriptionId) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
48
|
+
await subscriptionModule.deleteSubscriptions([subscriptionId]);
|
|
49
|
+
});
|
|
50
|
+
function buildSubscriptionReference(orderDisplayId, orderId) {
|
|
51
|
+
if (orderDisplayId !== null && orderDisplayId !== undefined) {
|
|
52
|
+
return `SUB-${String(orderDisplayId)}`;
|
|
53
|
+
}
|
|
54
|
+
return `SUB-${orderId}`;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN1YnNjcmlwdGlvbi1yZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2NyZWF0ZS1zdWJzY3JpcHRpb24tcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSw2REFBZ0U7QUFTaEUsNERBQXFFO0FBMkJ4RCxRQUFBLDRCQUE0QixHQUFHLElBQUEsMEJBQVUsRUFDcEQsNEJBQTRCLEVBQzVCLEtBQUssV0FDSCxLQUF3QyxFQUN4QyxFQUFFLFNBQVMsRUFBRTtJQUViLE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQTRCLGtDQUFtQixDQUFDLENBQUE7SUFFbkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQztRQUMzRCxTQUFTLEVBQUUsMEJBQTBCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDN0UsTUFBTSxFQUFFLDBCQUFrQixDQUFDLE1BQU07UUFDakMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVU7UUFDN0MsVUFBVSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVO1FBQzdDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7UUFDNUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1FBQ3RDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3RDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUNwQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUNqQyxDQUFDLENBQUMsSUFBSTtRQUNSLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixlQUFlLEVBQUUsS0FBSztRQUN0QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUN6RSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7UUFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtRQUN4QyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1FBQ3hDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN0QyxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ2hDO0tBQ0ssQ0FBQyxDQUFBO0lBRVQsT0FBTyxJQUFJLDRCQUFZLENBQ3JCO1FBQ0UsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0tBQ2YsRUFDRCxPQUFPLENBQUMsRUFBRSxDQUNYLENBQUE7QUFDSCxDQUFDLEVBQ0QsS0FBSyxXQUFXLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRTtJQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUN0QixTQUFTLENBQUMsT0FBTyxDQUE0QixrQ0FBbUIsQ0FBQyxDQUFBO0lBRW5FLE1BQU0sa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO0FBQ2hFLENBQUMsQ0FDRixDQUFBO0FBRUQsU0FBUywwQkFBMEIsQ0FDakMsY0FBc0MsRUFDdEMsT0FBZTtJQUVmLElBQUksY0FBYyxLQUFLLElBQUksSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUQsT0FBTyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxPQUFPLE9BQU8sT0FBTyxFQUFFLENBQUE7QUFDekIsQ0FBQyJ9
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureNextRenewalCycleStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const renewal_1 = require("../../modules/renewal");
|
|
6
|
+
const types_1 = require("../../modules/renewal/types");
|
|
7
|
+
const upcoming_cycle_1 = require("../../modules/renewal/utils/upcoming-cycle");
|
|
8
|
+
const types_2 = require("../../modules/settings/types");
|
|
9
|
+
const subscription_1 = require("../../modules/subscription");
|
|
10
|
+
const subscription_settings_1 = require("../utils/subscription-settings");
|
|
11
|
+
exports.ensureNextRenewalCycleStep = (0, workflows_sdk_1.createStep)("ensure-next-renewal-cycle", async function (input, { container }) {
|
|
12
|
+
const renewalModule = container.resolve(renewal_1.RENEWAL_MODULE);
|
|
13
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
14
|
+
const subscription = (await subscriptionModule.retrieveSubscription(input.subscription_id));
|
|
15
|
+
const existingCycles = (await renewalModule.listRenewalCycles({
|
|
16
|
+
subscription_id: subscription.id,
|
|
17
|
+
}));
|
|
18
|
+
if (!(0, upcoming_cycle_1.shouldSubscriptionHaveUpcomingRenewalCycle)(subscription)) {
|
|
19
|
+
const scheduledCycles = existingCycles.filter((cycle) => cycle.status === types_1.RenewalCycleStatus.SCHEDULED);
|
|
20
|
+
if (scheduledCycles.length) {
|
|
21
|
+
await renewalModule.deleteRenewalCycles(scheduledCycles.map((cycle) => cycle.id));
|
|
22
|
+
return new workflows_sdk_1.StepResponse({
|
|
23
|
+
action: "deleted",
|
|
24
|
+
subscription_id: subscription.id,
|
|
25
|
+
renewal_cycle_id: null,
|
|
26
|
+
}, {
|
|
27
|
+
action: "deleted",
|
|
28
|
+
previous: scheduledCycles.map((cycle) => ({
|
|
29
|
+
id: cycle.id,
|
|
30
|
+
subscription_id: cycle.subscription_id,
|
|
31
|
+
scheduled_for: cycle.scheduled_for,
|
|
32
|
+
processed_at: cycle.processed_at,
|
|
33
|
+
status: cycle.status,
|
|
34
|
+
approval_required: cycle.approval_required,
|
|
35
|
+
approval_status: cycle.approval_status,
|
|
36
|
+
approval_decided_at: cycle.approval_decided_at,
|
|
37
|
+
approval_decided_by: cycle.approval_decided_by,
|
|
38
|
+
approval_reason: cycle.approval_reason,
|
|
39
|
+
generated_order_id: cycle.generated_order_id,
|
|
40
|
+
applied_pending_update_data: cycle.applied_pending_update_data,
|
|
41
|
+
last_error: cycle.last_error,
|
|
42
|
+
attempt_count: cycle.attempt_count,
|
|
43
|
+
metadata: cycle.metadata,
|
|
44
|
+
})),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return new workflows_sdk_1.StepResponse({
|
|
48
|
+
action: "noop",
|
|
49
|
+
subscription_id: subscription.id,
|
|
50
|
+
renewal_cycle_id: null,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const scheduledFor = subscription.next_renewal_at;
|
|
54
|
+
const settings = await (0, subscription_settings_1.getEffectiveSubscriptionSettings)(container);
|
|
55
|
+
const existingCycle = (0, upcoming_cycle_1.findUpcomingRenewalCycle)(existingCycles, scheduledFor);
|
|
56
|
+
if (!existingCycle) {
|
|
57
|
+
const createTimeBehavior = settings.is_persisted
|
|
58
|
+
? settings.default_renewal_behavior
|
|
59
|
+
: types_2.SubscriptionRenewalBehavior.REQUIRE_REVIEW_FOR_PENDING_CHANGES;
|
|
60
|
+
const approvalState = (0, upcoming_cycle_1.deriveUpcomingRenewalApprovalState)(subscription, scheduledFor, createTimeBehavior);
|
|
61
|
+
const created = await renewalModule.createRenewalCycles({
|
|
62
|
+
subscription_id: subscription.id,
|
|
63
|
+
scheduled_for: scheduledFor,
|
|
64
|
+
status: types_1.RenewalCycleStatus.SCHEDULED,
|
|
65
|
+
metadata: {
|
|
66
|
+
settings_policy: {
|
|
67
|
+
default_renewal_behavior: createTimeBehavior,
|
|
68
|
+
settings_version: settings.version,
|
|
69
|
+
is_persisted: settings.is_persisted,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
...approvalState,
|
|
73
|
+
});
|
|
74
|
+
return new workflows_sdk_1.StepResponse({
|
|
75
|
+
action: "created",
|
|
76
|
+
subscription_id: subscription.id,
|
|
77
|
+
renewal_cycle_id: created.id,
|
|
78
|
+
}, {
|
|
79
|
+
action: "created",
|
|
80
|
+
renewal_cycle_id: created.id,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const existingBehavior = existingCycle.metadata?.settings_policy?.default_renewal_behavior ??
|
|
84
|
+
(settings.is_persisted
|
|
85
|
+
? settings.default_renewal_behavior
|
|
86
|
+
: types_2.SubscriptionRenewalBehavior.REQUIRE_REVIEW_FOR_PENDING_CHANGES);
|
|
87
|
+
const approvalState = (0, upcoming_cycle_1.deriveUpcomingRenewalApprovalState)(subscription, scheduledFor, existingBehavior);
|
|
88
|
+
if (existingCycle.status === types_1.RenewalCycleStatus.PROCESSING ||
|
|
89
|
+
existingCycle.status === types_1.RenewalCycleStatus.SUCCEEDED) {
|
|
90
|
+
return new workflows_sdk_1.StepResponse({
|
|
91
|
+
action: "noop",
|
|
92
|
+
subscription_id: subscription.id,
|
|
93
|
+
renewal_cycle_id: existingCycle.id,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (existingCycle.approval_required === approvalState.approval_required &&
|
|
97
|
+
existingCycle.approval_status === approvalState.approval_status &&
|
|
98
|
+
existingCycle.approval_decided_at === approvalState.approval_decided_at &&
|
|
99
|
+
existingCycle.approval_decided_by === approvalState.approval_decided_by &&
|
|
100
|
+
existingCycle.approval_reason === approvalState.approval_reason) {
|
|
101
|
+
return new workflows_sdk_1.StepResponse({
|
|
102
|
+
action: "noop",
|
|
103
|
+
subscription_id: subscription.id,
|
|
104
|
+
renewal_cycle_id: existingCycle.id,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const updated = await renewalModule.updateRenewalCycles({
|
|
108
|
+
id: existingCycle.id,
|
|
109
|
+
...approvalState,
|
|
110
|
+
metadata: {
|
|
111
|
+
...(existingCycle.metadata ?? {}),
|
|
112
|
+
settings_policy: {
|
|
113
|
+
default_renewal_behavior: existingBehavior,
|
|
114
|
+
settings_version: existingCycle.metadata?.settings_policy?.settings_version ?? settings.version,
|
|
115
|
+
is_persisted: existingCycle.metadata?.settings_policy?.is_persisted ?? settings.is_persisted,
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
return new workflows_sdk_1.StepResponse({
|
|
120
|
+
action: "updated",
|
|
121
|
+
subscription_id: subscription.id,
|
|
122
|
+
renewal_cycle_id: updated.id,
|
|
123
|
+
}, {
|
|
124
|
+
action: "updated",
|
|
125
|
+
previous: {
|
|
126
|
+
id: existingCycle.id,
|
|
127
|
+
approval_required: existingCycle.approval_required,
|
|
128
|
+
approval_status: existingCycle.approval_status,
|
|
129
|
+
approval_decided_at: existingCycle.approval_decided_at,
|
|
130
|
+
approval_decided_by: existingCycle.approval_decided_by,
|
|
131
|
+
approval_reason: existingCycle.approval_reason,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}, async function (compensation, { container }) {
|
|
135
|
+
if (!compensation) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const renewalModule = container.resolve(renewal_1.RENEWAL_MODULE);
|
|
139
|
+
if (compensation.action === "created") {
|
|
140
|
+
await renewalModule.deleteRenewalCycles(compensation.renewal_cycle_id);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (compensation.action === "deleted") {
|
|
144
|
+
for (const cycle of compensation.previous) {
|
|
145
|
+
await renewalModule.createRenewalCycles(cycle);
|
|
146
|
+
}
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await renewalModule.updateRenewalCycles(compensation.previous);
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLW5leHQtcmVuZXdhbC1jeWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvZW5zdXJlLW5leHQtcmVuZXdhbC1jeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsbURBQXNEO0FBRXRELHVEQUdvQztBQUNwQywrRUFNbUQ7QUFDbkQsd0RBQTBFO0FBQzFFLDZEQUFnRTtBQUVoRSwwRUFBaUY7QUFpRHBFLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNsRCwyQkFBMkIsRUFDM0IsS0FBSyxXQUNILEtBQXNDLEVBQ3RDLEVBQUUsU0FBUyxFQUFFO0lBRWIsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBdUIsd0JBQWMsQ0FBQyxDQUFBO0lBQzdFLE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQTRCLGtDQUFtQixDQUFDLENBQUE7SUFFbkUsTUFBTSxZQUFZLEdBQ2hCLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FDNUMsS0FBSyxDQUFDLGVBQWUsQ0FDdEIsQ0FBc0MsQ0FBQTtJQUV6QyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBQzVELGVBQWUsRUFBRSxZQUFZLENBQUMsRUFBRTtLQUMxQixDQUFDLENBQWlDLENBQUE7SUFFMUMsSUFBSSxDQUFDLElBQUEsMkRBQTBDLEVBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUMzQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSywwQkFBa0IsQ0FBQyxTQUFTLENBQ3pELENBQUE7UUFFRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLGFBQWEsQ0FBQyxtQkFBbUIsQ0FD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
|