@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,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const renewal_cycle_1 = __importDefault(require("./renewal-cycle"));
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const RenewalAttempt = utils_1.model
|
|
10
|
+
.define("renewal_attempt", {
|
|
11
|
+
id: utils_1.model.id().primaryKey(),
|
|
12
|
+
renewal_cycle: utils_1.model.belongsTo(() => renewal_cycle_1.default, {
|
|
13
|
+
mappedBy: "attempts",
|
|
14
|
+
}),
|
|
15
|
+
attempt_no: utils_1.model.number(),
|
|
16
|
+
started_at: utils_1.model.dateTime(),
|
|
17
|
+
finished_at: utils_1.model.dateTime().nullable(),
|
|
18
|
+
status: utils_1.model
|
|
19
|
+
.enum(types_1.RenewalAttemptStatus)
|
|
20
|
+
.default(types_1.RenewalAttemptStatus.PROCESSING),
|
|
21
|
+
error_code: utils_1.model.text().nullable(),
|
|
22
|
+
error_message: utils_1.model.text().nullable(),
|
|
23
|
+
payment_reference: utils_1.model.text().nullable(),
|
|
24
|
+
order_id: utils_1.model.text().nullable(),
|
|
25
|
+
metadata: utils_1.model.json().nullable(),
|
|
26
|
+
})
|
|
27
|
+
.indexes([
|
|
28
|
+
{
|
|
29
|
+
on: ["renewal_cycle_id"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
on: ["attempt_no"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
on: ["status"],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
on: ["started_at"],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
on: ["finished_at"],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
on: ["renewal_cycle_id", "attempt_no"],
|
|
45
|
+
unique: true,
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
exports.default = RenewalAttempt;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZXdhbC1hdHRlbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcmVuZXdhbC9tb2RlbHMvcmVuZXdhbC1hdHRlbXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQWlEO0FBQ2pELG9FQUEwQztBQUMxQyxvQ0FBK0M7QUFFL0MsTUFBTSxjQUFjLEdBQUcsYUFBSztLQUN6QixNQUFNLENBQUMsaUJBQWlCLEVBQUU7SUFDekIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQVksRUFBRTtRQUNqRCxRQUFRLEVBQUUsVUFBVTtLQUNyQixDQUFDO0lBQ0YsVUFBVSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUU7SUFDMUIsVUFBVSxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUU7SUFDNUIsV0FBVyxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsTUFBTSxFQUFFLGFBQUs7U0FDVixJQUFJLENBQUMsNEJBQW9CLENBQUM7U0FDMUIsT0FBTyxDQUFDLDRCQUFvQixDQUFDLFVBQVUsQ0FBQztJQUMzQyxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxhQUFhLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN0QyxpQkFBaUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0tBQ3pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUNwQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxJQUFJO0tBQ2I7Q0FDRixDQUFDLENBQUE7QUFFSixrQkFBZSxjQUFjLENBQUEifQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const renewal_attempt_1 = __importDefault(require("./renewal-attempt"));
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const RenewalCycle = utils_1.model
|
|
10
|
+
.define("renewal_cycle", {
|
|
11
|
+
id: utils_1.model.id().primaryKey(),
|
|
12
|
+
subscription_id: utils_1.model.text(),
|
|
13
|
+
scheduled_for: utils_1.model.dateTime(),
|
|
14
|
+
processed_at: utils_1.model.dateTime().nullable(),
|
|
15
|
+
status: utils_1.model
|
|
16
|
+
.enum(types_1.RenewalCycleStatus)
|
|
17
|
+
.default(types_1.RenewalCycleStatus.SCHEDULED),
|
|
18
|
+
approval_required: utils_1.model.boolean().default(false),
|
|
19
|
+
approval_status: utils_1.model.enum(types_1.RenewalApprovalStatus).nullable(),
|
|
20
|
+
approval_decided_at: utils_1.model.dateTime().nullable(),
|
|
21
|
+
approval_decided_by: utils_1.model.text().nullable(),
|
|
22
|
+
approval_reason: utils_1.model.text().nullable(),
|
|
23
|
+
generated_order_id: utils_1.model.text().nullable(),
|
|
24
|
+
applied_pending_update_data: utils_1.model.json().nullable(),
|
|
25
|
+
last_error: utils_1.model.text().nullable(),
|
|
26
|
+
attempt_count: utils_1.model.number().default(0),
|
|
27
|
+
attempts: utils_1.model.hasMany(() => renewal_attempt_1.default, {
|
|
28
|
+
mappedBy: "renewal_cycle",
|
|
29
|
+
}),
|
|
30
|
+
metadata: utils_1.model.json().nullable(),
|
|
31
|
+
})
|
|
32
|
+
.indexes([
|
|
33
|
+
{
|
|
34
|
+
on: ["subscription_id"],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
on: ["scheduled_for"],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
on: ["status"],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
on: ["approval_required"],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
on: ["approval_status"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
on: ["generated_order_id"],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
on: ["scheduled_for", "status"],
|
|
53
|
+
},
|
|
54
|
+
]);
|
|
55
|
+
exports.default = RenewalCycle;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZXdhbC1jeWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlbmV3YWwvbW9kZWxzL3JlbmV3YWwtY3ljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBaUQ7QUFDakQsd0VBQThDO0FBQzlDLG9DQUdpQjtBQUVqQixNQUFNLFlBQVksR0FBRyxhQUFLO0tBQ3ZCLE1BQU0sQ0FBQyxlQUFlLEVBQUU7SUFDdkIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsZUFBZSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDN0IsYUFBYSxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUU7SUFDL0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMsTUFBTSxFQUFFLGFBQUs7U0FDVixJQUFJLENBQUMsMEJBQWtCLENBQUM7U0FDeEIsT0FBTyxDQUFDLDBCQUFrQixDQUFDLFNBQVMsQ0FBQztJQUN4QyxpQkFBaUIsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxlQUFlLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyw2QkFBcUIsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM3RCxtQkFBbUIsRUFBRSxhQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hELG1CQUFtQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsZUFBZSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQywyQkFBMkIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BELFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLGFBQWEsRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLEVBQUUsYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBYyxFQUFFO1FBQzVDLFFBQVEsRUFBRSxlQUFlO0tBQzFCLENBQUM7SUFDRixRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsQyxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1A7UUFDRSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUN4QjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDZjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDMUI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0tBQ3hCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztLQUMzQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQztLQUNoQztDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLFlBQVksQ0FBQSJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const renewal_attempt_1 = __importDefault(require("./models/renewal-attempt"));
|
|
8
|
+
const renewal_cycle_1 = __importDefault(require("./models/renewal-cycle"));
|
|
9
|
+
class RenewalModuleService extends (0, utils_1.MedusaService)({
|
|
10
|
+
RenewalCycle: renewal_cycle_1.default,
|
|
11
|
+
RenewalAttempt: renewal_attempt_1.default,
|
|
12
|
+
}) {
|
|
13
|
+
}
|
|
14
|
+
exports.default = RenewalModuleService;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlbmV3YWwvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF5RDtBQUN6RCwrRUFBcUQ7QUFDckQsMkVBQWlEO0FBRWpELE1BQU0sb0JBQXFCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQy9DLFlBQVksRUFBWix1QkFBWTtJQUNaLGNBQWMsRUFBZCx5QkFBYztDQUNmLENBQUM7Q0FBRztBQUVMLGtCQUFlLG9CQUFvQixDQUFBIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenewalApprovalStatus = exports.RenewalAttemptStatus = exports.RenewalCycleStatus = void 0;
|
|
4
|
+
var RenewalCycleStatus;
|
|
5
|
+
(function (RenewalCycleStatus) {
|
|
6
|
+
RenewalCycleStatus["SCHEDULED"] = "scheduled";
|
|
7
|
+
RenewalCycleStatus["PROCESSING"] = "processing";
|
|
8
|
+
RenewalCycleStatus["SUCCEEDED"] = "succeeded";
|
|
9
|
+
RenewalCycleStatus["FAILED"] = "failed";
|
|
10
|
+
})(RenewalCycleStatus || (exports.RenewalCycleStatus = RenewalCycleStatus = {}));
|
|
11
|
+
var RenewalAttemptStatus;
|
|
12
|
+
(function (RenewalAttemptStatus) {
|
|
13
|
+
RenewalAttemptStatus["PROCESSING"] = "processing";
|
|
14
|
+
RenewalAttemptStatus["SUCCEEDED"] = "succeeded";
|
|
15
|
+
RenewalAttemptStatus["FAILED"] = "failed";
|
|
16
|
+
})(RenewalAttemptStatus || (exports.RenewalAttemptStatus = RenewalAttemptStatus = {}));
|
|
17
|
+
var RenewalApprovalStatus;
|
|
18
|
+
(function (RenewalApprovalStatus) {
|
|
19
|
+
RenewalApprovalStatus["PENDING"] = "pending";
|
|
20
|
+
RenewalApprovalStatus["APPROVED"] = "approved";
|
|
21
|
+
RenewalApprovalStatus["REJECTED"] = "rejected";
|
|
22
|
+
})(RenewalApprovalStatus || (exports.RenewalApprovalStatus = RenewalApprovalStatus = {}));
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9yZW5ld2FsL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1Qiw2Q0FBdUIsQ0FBQTtJQUN2QiwrQ0FBeUIsQ0FBQTtJQUN6Qiw2Q0FBdUIsQ0FBQTtJQUN2Qix1Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFLN0I7QUFFRCxJQUFZLG9CQUlYO0FBSkQsV0FBWSxvQkFBb0I7SUFDOUIsaURBQXlCLENBQUE7SUFDekIsK0NBQXVCLENBQUE7SUFDdkIseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLG9CQUFvQixvQ0FBcEIsb0JBQW9CLFFBSS9CO0FBRUQsSUFBWSxxQkFJWDtBQUpELFdBQVkscUJBQXFCO0lBQy9CLDRDQUFtQixDQUFBO0lBQ25CLDhDQUFxQixDQUFBO0lBQ3JCLDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFKVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUloQyJ9
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listRenewalAttemptsForCycle = listRenewalAttemptsForCycle;
|
|
4
|
+
exports.listAdminRenewals = listAdminRenewals;
|
|
5
|
+
exports.getAdminRenewalDetail = getAdminRenewalDetail;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const renewal_1 = require("../../../admin/types/renewal");
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const errors_1 = require("./errors");
|
|
10
|
+
const cycleListFields = [
|
|
11
|
+
"id",
|
|
12
|
+
"subscription_id",
|
|
13
|
+
"scheduled_for",
|
|
14
|
+
"processed_at",
|
|
15
|
+
"status",
|
|
16
|
+
"approval_required",
|
|
17
|
+
"approval_status",
|
|
18
|
+
"approval_decided_at",
|
|
19
|
+
"approval_decided_by",
|
|
20
|
+
"approval_reason",
|
|
21
|
+
"generated_order_id",
|
|
22
|
+
"last_error",
|
|
23
|
+
"attempt_count",
|
|
24
|
+
"created_at",
|
|
25
|
+
"updated_at",
|
|
26
|
+
];
|
|
27
|
+
const cycleDetailFields = [
|
|
28
|
+
...cycleListFields,
|
|
29
|
+
"applied_pending_update_data",
|
|
30
|
+
"metadata",
|
|
31
|
+
];
|
|
32
|
+
const attemptFields = [
|
|
33
|
+
"id",
|
|
34
|
+
"renewal_cycle_id",
|
|
35
|
+
"attempt_no",
|
|
36
|
+
"started_at",
|
|
37
|
+
"finished_at",
|
|
38
|
+
"status",
|
|
39
|
+
"error_code",
|
|
40
|
+
"error_message",
|
|
41
|
+
"payment_reference",
|
|
42
|
+
"order_id",
|
|
43
|
+
"metadata",
|
|
44
|
+
];
|
|
45
|
+
const subscriptionFields = [
|
|
46
|
+
"id",
|
|
47
|
+
"reference",
|
|
48
|
+
"status",
|
|
49
|
+
"customer_snapshot",
|
|
50
|
+
"product_snapshot",
|
|
51
|
+
];
|
|
52
|
+
const orderFields = [
|
|
53
|
+
"id",
|
|
54
|
+
"display_id",
|
|
55
|
+
"status",
|
|
56
|
+
];
|
|
57
|
+
const databaseSortableFields = new Set([
|
|
58
|
+
"scheduled_for",
|
|
59
|
+
"updated_at",
|
|
60
|
+
"created_at",
|
|
61
|
+
"status",
|
|
62
|
+
"approval_status",
|
|
63
|
+
"processed_at",
|
|
64
|
+
]);
|
|
65
|
+
const inMemorySortableFields = new Set([
|
|
66
|
+
"last_attempt_status",
|
|
67
|
+
"subscription_reference",
|
|
68
|
+
"customer_name",
|
|
69
|
+
"product_title",
|
|
70
|
+
"order_display_id",
|
|
71
|
+
]);
|
|
72
|
+
function assertSortableField(order) {
|
|
73
|
+
if (!order) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!databaseSortableFields.has(order) &&
|
|
77
|
+
!inMemorySortableFields.has(order)) {
|
|
78
|
+
throw errors_1.renewalErrors.invalidData(`Unsupported sort field '${order}'`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function mapCycleStatus(status) {
|
|
82
|
+
switch (status) {
|
|
83
|
+
case types_1.RenewalCycleStatus.SCHEDULED:
|
|
84
|
+
return renewal_1.RenewalCycleAdminStatus.SCHEDULED;
|
|
85
|
+
case types_1.RenewalCycleStatus.PROCESSING:
|
|
86
|
+
return renewal_1.RenewalCycleAdminStatus.PROCESSING;
|
|
87
|
+
case types_1.RenewalCycleStatus.SUCCEEDED:
|
|
88
|
+
return renewal_1.RenewalCycleAdminStatus.SUCCEEDED;
|
|
89
|
+
case types_1.RenewalCycleStatus.FAILED:
|
|
90
|
+
return renewal_1.RenewalCycleAdminStatus.FAILED;
|
|
91
|
+
}
|
|
92
|
+
throw errors_1.renewalErrors.invalidData(`Unsupported renewal cycle status '${status}'`);
|
|
93
|
+
}
|
|
94
|
+
function mapAttemptStatus(status) {
|
|
95
|
+
switch (status) {
|
|
96
|
+
case types_1.RenewalAttemptStatus.PROCESSING:
|
|
97
|
+
return renewal_1.RenewalAttemptAdminStatus.PROCESSING;
|
|
98
|
+
case types_1.RenewalAttemptStatus.SUCCEEDED:
|
|
99
|
+
return renewal_1.RenewalAttemptAdminStatus.SUCCEEDED;
|
|
100
|
+
case types_1.RenewalAttemptStatus.FAILED:
|
|
101
|
+
return renewal_1.RenewalAttemptAdminStatus.FAILED;
|
|
102
|
+
}
|
|
103
|
+
throw errors_1.renewalErrors.invalidData(`Unsupported renewal attempt status '${status}'`);
|
|
104
|
+
}
|
|
105
|
+
function mapApprovalStatus(status) {
|
|
106
|
+
switch (status) {
|
|
107
|
+
case types_1.RenewalApprovalStatus.PENDING:
|
|
108
|
+
return renewal_1.RenewalApprovalStatus.PENDING;
|
|
109
|
+
case types_1.RenewalApprovalStatus.APPROVED:
|
|
110
|
+
return renewal_1.RenewalApprovalStatus.APPROVED;
|
|
111
|
+
case types_1.RenewalApprovalStatus.REJECTED:
|
|
112
|
+
return renewal_1.RenewalApprovalStatus.REJECTED;
|
|
113
|
+
default:
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function mapApprovalSummary(record) {
|
|
118
|
+
return {
|
|
119
|
+
required: record.approval_required,
|
|
120
|
+
status: mapApprovalStatus(record.approval_status),
|
|
121
|
+
decided_at: record.approval_decided_at,
|
|
122
|
+
decided_by: record.approval_decided_by,
|
|
123
|
+
reason: record.approval_reason,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function mapPendingChanges(value) {
|
|
127
|
+
if (!value) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
variant_id: value.variant_id,
|
|
132
|
+
variant_title: value.variant_title,
|
|
133
|
+
frequency_interval: value.frequency_interval,
|
|
134
|
+
frequency_value: value.frequency_value,
|
|
135
|
+
effective_at: value.effective_at,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async function getLatestAttemptMap(container, cycleIds) {
|
|
139
|
+
if (!cycleIds.length) {
|
|
140
|
+
return new Map();
|
|
141
|
+
}
|
|
142
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
143
|
+
const { data } = await query.graph({
|
|
144
|
+
entity: "renewal_attempt",
|
|
145
|
+
fields: [...attemptFields],
|
|
146
|
+
filters: {
|
|
147
|
+
renewal_cycle_id: cycleIds,
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
const map = new Map();
|
|
151
|
+
for (const record of data) {
|
|
152
|
+
const current = map.get(record.renewal_cycle_id);
|
|
153
|
+
if (!current || record.attempt_no > current.attempt_no) {
|
|
154
|
+
map.set(record.renewal_cycle_id, record);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return new Map([...map.entries()].map(([cycleId, record]) => [
|
|
158
|
+
cycleId,
|
|
159
|
+
{
|
|
160
|
+
status: mapAttemptStatus(record.status),
|
|
161
|
+
at: record.finished_at ?? record.started_at,
|
|
162
|
+
},
|
|
163
|
+
]));
|
|
164
|
+
}
|
|
165
|
+
async function getSubscriptionSummaryMap(container, subscriptionIds) {
|
|
166
|
+
if (!subscriptionIds.length) {
|
|
167
|
+
return new Map();
|
|
168
|
+
}
|
|
169
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
170
|
+
const { data } = await query.graph({
|
|
171
|
+
entity: "subscription",
|
|
172
|
+
fields: [...subscriptionFields],
|
|
173
|
+
filters: {
|
|
174
|
+
id: subscriptionIds,
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
const records = data;
|
|
178
|
+
return new Map(records.map((record) => [
|
|
179
|
+
record.id,
|
|
180
|
+
{
|
|
181
|
+
subscription_id: record.id,
|
|
182
|
+
reference: record.reference,
|
|
183
|
+
status: record.status,
|
|
184
|
+
customer_name: record.customer_snapshot?.full_name ?? "Unknown customer",
|
|
185
|
+
product_title: record.product_snapshot?.product_title ?? "Unknown product",
|
|
186
|
+
variant_title: record.product_snapshot?.variant_title ?? "Unknown variant",
|
|
187
|
+
sku: record.product_snapshot?.sku ?? null,
|
|
188
|
+
},
|
|
189
|
+
]));
|
|
190
|
+
}
|
|
191
|
+
async function getOrderSummaryMap(container, orderIds) {
|
|
192
|
+
if (!orderIds.length) {
|
|
193
|
+
return new Map();
|
|
194
|
+
}
|
|
195
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
196
|
+
const { data } = await query.graph({
|
|
197
|
+
entity: "order",
|
|
198
|
+
fields: [...orderFields],
|
|
199
|
+
filters: {
|
|
200
|
+
id: orderIds,
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
const records = data;
|
|
204
|
+
return new Map(records.map((record) => [
|
|
205
|
+
record.id,
|
|
206
|
+
{
|
|
207
|
+
order_id: record.id,
|
|
208
|
+
display_id: record.display_id,
|
|
209
|
+
status: record.status,
|
|
210
|
+
},
|
|
211
|
+
]));
|
|
212
|
+
}
|
|
213
|
+
async function mapRenewalListItems(container, records) {
|
|
214
|
+
const latestAttemptMap = await getLatestAttemptMap(container, records.map((record) => record.id));
|
|
215
|
+
const subscriptionSummaryMap = await getSubscriptionSummaryMap(container, [...new Set(records.map((record) => record.subscription_id))]);
|
|
216
|
+
const orderSummaryMap = await getOrderSummaryMap(container, [
|
|
217
|
+
...new Set(records
|
|
218
|
+
.map((record) => record.generated_order_id)
|
|
219
|
+
.filter((value) => Boolean(value))),
|
|
220
|
+
]);
|
|
221
|
+
return records.map((record) => {
|
|
222
|
+
const latestAttempt = latestAttemptMap.get(record.id);
|
|
223
|
+
return {
|
|
224
|
+
id: record.id,
|
|
225
|
+
status: mapCycleStatus(record.status),
|
|
226
|
+
subscription: subscriptionSummaryMap.get(record.subscription_id) ?? {
|
|
227
|
+
subscription_id: record.subscription_id,
|
|
228
|
+
reference: "Unknown subscription",
|
|
229
|
+
status: "past_due",
|
|
230
|
+
customer_name: "Unknown customer",
|
|
231
|
+
product_title: "Unknown product",
|
|
232
|
+
variant_title: "Unknown variant",
|
|
233
|
+
sku: null,
|
|
234
|
+
},
|
|
235
|
+
scheduled_for: record.scheduled_for,
|
|
236
|
+
last_attempt_status: latestAttempt?.status ?? null,
|
|
237
|
+
last_attempt_at: latestAttempt?.at ?? null,
|
|
238
|
+
approval: mapApprovalSummary(record),
|
|
239
|
+
generated_order: record.generated_order_id
|
|
240
|
+
? orderSummaryMap.get(record.generated_order_id) ?? null
|
|
241
|
+
: null,
|
|
242
|
+
updated_at: record.updated_at,
|
|
243
|
+
};
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
function matchesSearch(item, search) {
|
|
247
|
+
const value = search.trim().toLowerCase();
|
|
248
|
+
if (!value.length) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
return [
|
|
252
|
+
item.subscription.reference,
|
|
253
|
+
item.subscription.customer_name,
|
|
254
|
+
item.subscription.product_title,
|
|
255
|
+
item.subscription.variant_title,
|
|
256
|
+
item.generated_order?.display_id?.toString() ?? "",
|
|
257
|
+
]
|
|
258
|
+
.join(" ")
|
|
259
|
+
.toLowerCase()
|
|
260
|
+
.includes(value);
|
|
261
|
+
}
|
|
262
|
+
function matchesLastAttemptStatus(item, statuses) {
|
|
263
|
+
if (!statuses?.length) {
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
if (!item.last_attempt_status) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return statuses.includes(item.last_attempt_status);
|
|
270
|
+
}
|
|
271
|
+
function getSortableValue(item, order) {
|
|
272
|
+
switch (order) {
|
|
273
|
+
case "scheduled_for":
|
|
274
|
+
return item.scheduled_for ?? "";
|
|
275
|
+
case "updated_at":
|
|
276
|
+
return item.updated_at ?? "";
|
|
277
|
+
case "status":
|
|
278
|
+
return item.status ?? "";
|
|
279
|
+
case "approval_status":
|
|
280
|
+
return item.approval.status ?? "";
|
|
281
|
+
case "last_attempt_status":
|
|
282
|
+
return item.last_attempt_status ?? "";
|
|
283
|
+
case "subscription_reference":
|
|
284
|
+
return item.subscription.reference ?? "";
|
|
285
|
+
case "customer_name":
|
|
286
|
+
return item.subscription.customer_name ?? "";
|
|
287
|
+
case "product_title":
|
|
288
|
+
return item.subscription.product_title ?? "";
|
|
289
|
+
case "order_display_id":
|
|
290
|
+
return item.generated_order?.display_id?.toString() ?? "";
|
|
291
|
+
default:
|
|
292
|
+
return "";
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function sortItems(items, order, direction) {
|
|
296
|
+
const multiplier = direction === "asc" ? 1 : -1;
|
|
297
|
+
return [...items].sort((left, right) => {
|
|
298
|
+
const leftValue = getSortableValue(left, order);
|
|
299
|
+
const rightValue = getSortableValue(right, order);
|
|
300
|
+
if (leftValue < rightValue) {
|
|
301
|
+
return -1 * multiplier;
|
|
302
|
+
}
|
|
303
|
+
if (leftValue > rightValue) {
|
|
304
|
+
return 1 * multiplier;
|
|
305
|
+
}
|
|
306
|
+
return 0;
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
function buildFilters(input) {
|
|
310
|
+
const filters = {};
|
|
311
|
+
if (input.status?.length) {
|
|
312
|
+
filters.status = input.status;
|
|
313
|
+
}
|
|
314
|
+
if (input.approval_status?.length) {
|
|
315
|
+
filters.approval_status = input.approval_status;
|
|
316
|
+
}
|
|
317
|
+
if (input.subscription_id) {
|
|
318
|
+
filters.subscription_id = input.subscription_id;
|
|
319
|
+
}
|
|
320
|
+
if (input.generated_order_id) {
|
|
321
|
+
filters.generated_order_id = input.generated_order_id;
|
|
322
|
+
}
|
|
323
|
+
if (input.scheduled_from || input.scheduled_to) {
|
|
324
|
+
filters.scheduled_for = {
|
|
325
|
+
...(input.scheduled_from ? { $gte: input.scheduled_from } : {}),
|
|
326
|
+
...(input.scheduled_to ? { $lte: input.scheduled_to } : {}),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
return filters;
|
|
330
|
+
}
|
|
331
|
+
async function listRenewalAttemptsForCycle(container, renewalCycleId) {
|
|
332
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
333
|
+
const { data } = await query.graph({
|
|
334
|
+
entity: "renewal_attempt",
|
|
335
|
+
fields: [...attemptFields],
|
|
336
|
+
filters: {
|
|
337
|
+
renewal_cycle_id: [renewalCycleId],
|
|
338
|
+
},
|
|
339
|
+
pagination: {
|
|
340
|
+
order: {
|
|
341
|
+
attempt_no: "ASC",
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
});
|
|
345
|
+
return data.map((record) => ({
|
|
346
|
+
id: record.id,
|
|
347
|
+
attempt_no: record.attempt_no,
|
|
348
|
+
status: mapAttemptStatus(record.status),
|
|
349
|
+
started_at: record.started_at,
|
|
350
|
+
finished_at: record.finished_at,
|
|
351
|
+
error_code: record.error_code,
|
|
352
|
+
error_message: record.error_message,
|
|
353
|
+
payment_reference: record.payment_reference,
|
|
354
|
+
order_id: record.order_id,
|
|
355
|
+
}));
|
|
356
|
+
}
|
|
357
|
+
async function listAdminRenewals(container, input) {
|
|
358
|
+
assertSortableField(input.order);
|
|
359
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
360
|
+
const filters = buildFilters(input);
|
|
361
|
+
const limit = input.limit ?? 20;
|
|
362
|
+
const offset = input.offset ?? 0;
|
|
363
|
+
const direction = input.direction ?? "desc";
|
|
364
|
+
const order = input.order;
|
|
365
|
+
const isInMemorySort = typeof order === "string" && inMemorySortableFields.has(order);
|
|
366
|
+
const requiresInMemoryProcessing = Boolean(input.q) ||
|
|
367
|
+
Boolean(input.last_attempt_status?.length) ||
|
|
368
|
+
isInMemorySort;
|
|
369
|
+
if (!requiresInMemoryProcessing) {
|
|
370
|
+
const { data, metadata: { count = 0, take = limit, skip = offset } = {}, } = await query.graph({
|
|
371
|
+
entity: "renewal_cycle",
|
|
372
|
+
fields: [...cycleListFields],
|
|
373
|
+
filters,
|
|
374
|
+
pagination: {
|
|
375
|
+
take: limit,
|
|
376
|
+
skip: offset,
|
|
377
|
+
...(order && databaseSortableFields.has(order)
|
|
378
|
+
? {
|
|
379
|
+
order: {
|
|
380
|
+
[order]: direction.toUpperCase(),
|
|
381
|
+
},
|
|
382
|
+
}
|
|
383
|
+
: {}),
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
return {
|
|
387
|
+
renewals: await mapRenewalListItems(container, data),
|
|
388
|
+
count,
|
|
389
|
+
limit: take,
|
|
390
|
+
offset: skip,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
const { data } = await query.graph({
|
|
394
|
+
entity: "renewal_cycle",
|
|
395
|
+
fields: [...cycleListFields],
|
|
396
|
+
filters,
|
|
397
|
+
pagination: order && databaseSortableFields.has(order)
|
|
398
|
+
? {
|
|
399
|
+
order: {
|
|
400
|
+
[order]: direction.toUpperCase(),
|
|
401
|
+
},
|
|
402
|
+
}
|
|
403
|
+
: undefined,
|
|
404
|
+
});
|
|
405
|
+
let items = await mapRenewalListItems(container, data);
|
|
406
|
+
if (input.q) {
|
|
407
|
+
items = items.filter((item) => matchesSearch(item, input.q));
|
|
408
|
+
}
|
|
409
|
+
if (input.last_attempt_status?.length) {
|
|
410
|
+
items = items.filter((item) => matchesLastAttemptStatus(item, input.last_attempt_status));
|
|
411
|
+
}
|
|
412
|
+
if (order && isInMemorySort) {
|
|
413
|
+
items = sortItems(items, order, direction);
|
|
414
|
+
}
|
|
415
|
+
return {
|
|
416
|
+
renewals: items.slice(offset, offset + limit),
|
|
417
|
+
count: items.length,
|
|
418
|
+
limit,
|
|
419
|
+
offset,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
async function getAdminRenewalDetail(container, id) {
|
|
423
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
424
|
+
const { data } = await query.graph({
|
|
425
|
+
entity: "renewal_cycle",
|
|
426
|
+
fields: [...cycleDetailFields],
|
|
427
|
+
filters: {
|
|
428
|
+
id: [id],
|
|
429
|
+
},
|
|
430
|
+
});
|
|
431
|
+
const record = data[0];
|
|
432
|
+
if (!record) {
|
|
433
|
+
throw errors_1.renewalErrors.notFound("RenewalCycle", id);
|
|
434
|
+
}
|
|
435
|
+
const listItem = (await mapRenewalListItems(container, [record]))[0];
|
|
436
|
+
const attempts = await listRenewalAttemptsForCycle(container, id);
|
|
437
|
+
const detail = {
|
|
438
|
+
...listItem,
|
|
439
|
+
created_at: record.created_at,
|
|
440
|
+
processed_at: record.processed_at,
|
|
441
|
+
last_error: record.last_error,
|
|
442
|
+
pending_changes: mapPendingChanges(record.applied_pending_update_data),
|
|
443
|
+
attempts,
|
|
444
|
+
metadata: record.metadata ?? null,
|
|
445
|
+
};
|
|
446
|
+
return {
|
|
447
|
+
renewal: detail,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9yZW5ld2FsL3V0aWxzL2FkbWluLXF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMGdCQSxrRUE2QkM7QUFFRCw4Q0FzRkM7QUFFRCxzREFxQ0M7QUFycUJELHFEQUFxRTtBQUNyRSwwREFhcUM7QUFDckMsb0NBS2lCO0FBQ2pCLHFDQUF3QztBQTRFeEMsTUFBTSxlQUFlLEdBQUc7SUFDdEIsSUFBSTtJQUNKLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YsY0FBYztJQUNkLFFBQVE7SUFDUixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZUFBZTtJQUNmLFlBQVk7SUFDWixZQUFZO0NBQ0osQ0FBQTtBQUVWLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsR0FBRyxlQUFlO0lBQ2xCLDZCQUE2QjtJQUM3QixVQUFVO0NBQ0YsQ0FBQTtBQUVWLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLElBQUk7SUFDSixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLFlBQVk7SUFDWixhQUFhO0lBQ2IsUUFBUTtJQUNSLFlBQVk7SUFDWixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixVQUFVO0NBQ0YsQ0FBQTtBQUVWLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsSUFBSTtJQUNKLFdBQVc7SUFDWCxRQUFRO0lBQ1IsbUJBQW1CO0lBQ25CLGtCQUFrQjtDQUNWLENBQUE7QUFFVixNQUFNLFdBQVcsR0FBRztJQUNsQixJQUFJO0lBQ0osWUFBWTtJQUNaLFFBQVE7Q0FDQSxDQUFBO0FBRVYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNyQyxlQUFlO0lBQ2YsWUFBWTtJQUNaLFlBQVk7SUFDWixRQUFRO0lBQ1IsaUJB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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renewalErrors = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
exports.renewalErrors = {
|
|
6
|
+
notFound(entity, id) {
|
|
7
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `${entity} '${id}' was not found`);
|
|
8
|
+
},
|
|
9
|
+
invalidData(message) {
|
|
10
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, message);
|
|
11
|
+
},
|
|
12
|
+
conflict(message) {
|
|
13
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, message);
|
|
14
|
+
},
|
|
15
|
+
invalidTransition(renewalCycleId, message) {
|
|
16
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, message ??
|
|
17
|
+
`Renewal '${renewalCycleId}' can't transition from its current state`);
|
|
18
|
+
},
|
|
19
|
+
alreadyProcessing(renewalCycleId) {
|
|
20
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Renewal '${renewalCycleId}' is already processing`);
|
|
21
|
+
},
|
|
22
|
+
approvalNotRequired(renewalCycleId) {
|
|
23
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Renewal '${renewalCycleId}' doesn't require approval`);
|
|
24
|
+
},
|
|
25
|
+
approvalAlreadyDecided(renewalCycleId) {
|
|
26
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Renewal '${renewalCycleId}' approval decision has already been made`);
|
|
27
|
+
},
|
|
28
|
+
duplicateExecutionBlocked(renewalCycleId) {
|
|
29
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Duplicate execution for renewal '${renewalCycleId}' was blocked`);
|
|
30
|
+
},
|
|
31
|
+
subscriptionNotEligible(subscriptionId, reason) {
|
|
32
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Subscription '${subscriptionId}' isn't eligible for renewal: ${reason}`);
|
|
33
|
+
},
|
|
34
|
+
renewalOrderCreationFailed(renewalCycleId, message) {
|
|
35
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, message ??
|
|
36
|
+
`Renewal order creation failed for renewal '${renewalCycleId}'`);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcmVuZXdhbC91dGlscy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBRTFDLFFBQUEsYUFBYSxHQUFHO0lBQzNCLFFBQVEsQ0FBQyxNQUFjLEVBQUUsRUFBVTtRQUNqQyxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixHQUFHLE1BQU0sS0FBSyxFQUFFLGlCQUFpQixDQUNsQyxDQUFBO0lBQ0gsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLE9BQU8sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBQ0QsUUFBUSxDQUFDLE9BQWU7UUFDdEIsT0FBTyxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxjQUFzQixFQUFFLE9BQWdCO1FBQ3hELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQzFCLE9BQU87WUFDTCxZQUFZLGNBQWMsMkNBQTJDLENBQ3hFLENBQUE7SUFDSCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsY0FBc0I7UUFDdEMsT0FBTyxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDMUIsWUFBWSxjQUFjLHlCQUF5QixDQUNwRCxDQUFBO0lBQ0gsQ0FBQztJQUNELG1CQUFtQixDQUFDLGNBQXNCO1FBQ3hDLE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQzFCLFlBQVksY0FBYyw0QkFBNEIsQ0FDdkQsQ0FBQTtJQUNILENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxjQUFzQjtRQUMzQyxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUMxQixZQUFZLGNBQWMsMkNBQTJDLENBQ3RFLENBQUE7SUFDSCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsY0FBc0I7UUFDOUMsT0FBTyxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDMUIsb0NBQW9DLGNBQWMsZUFBZSxDQUNsRSxDQUFBO0lBQ0gsQ0FBQztJQUNELHVCQUF1QixDQUFDLGNBQXNCLEVBQUUsTUFBYztRQUM1RCxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUMxQixpQkFBaUIsY0FBYyxpQ0FBaUMsTUFBTSxFQUFFLENBQ3pFLENBQUE7SUFDSCxDQUFDO0lBQ0QsMEJBQTBCLENBQUMsY0FBc0IsRUFBRSxPQUFnQjtRQUNqRSxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUMxQixPQUFPO1lBQ0wsOENBQThDLGNBQWMsR0FBRyxDQUNsRSxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUEifQ==
|