@lodashventure/medusa-membership 0.1.2 → 0.3.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/src/api/middlewares.js +15 -1
- package/.medusa/server/src/api/store/customers/me/member-tier/route.js +74 -4
- package/.medusa/server/src/api/store/customers/me/wishlist/route.js +1 -1
- package/.medusa/server/src/api/store/promotion-codes/[id]/collect/route.js +116 -0
- package/.medusa/server/src/api/store/promotion-codes/[id]/route.js +123 -0
- package/.medusa/server/src/api/store/promotion-codes/route.js +62 -9
- package/.medusa/server/src/modules/membership/migrations/Migration20250416034358.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250416231624.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250418020235.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250420014232.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250420050937.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250421010109.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250421011451.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250422230822.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250423021328.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250423021925.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250424011144.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250507013347.js +2 -2
- package/.medusa/server/src/modules/promotion-cache/service.js +5 -1
- package/.medusa/server/src/modules/usable-promo/migrations/Migration20250504044646.js +2 -2
- package/.medusa/server/src/modules/wishlist/migrations/Migration20250424011114.js +2 -2
- package/.medusa/server/src/subscribers/customer-created.js +33 -4
- package/.medusa/server/src/subscribers/order-canceled.js +48 -0
- package/.medusa/server/src/subscribers/order-completed.js +62 -16
- package/.medusa/server/src/subscribers/order-fulfilled.js +68 -0
- package/.medusa/server/src/subscribers/order-payment-captured.js +111 -0
- package/.medusa/server/src/subscribers/order-placed.js +83 -9
- package/.medusa/server/src/subscribers/return-received.js +48 -0
- package/.medusa/server/src/workflows/membership/create-membership.js +27 -6
- package/.medusa/server/src/workflows/membership/void-membership-points.js +110 -0
- package/.medusa/server/src/workflows/usable-promo/invalidateUsedPromotionWorkflow.js +8 -2
- package/package.json +14 -28
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250420050937 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250420050937 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`create table if not exists "membership_transaction" ("id" text not null, "customer_id" text not null, "membership_id" text not null, "points" integer not null, "source" text not null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "membership_transaction_pkey" primary key ("id"));`);
|
|
@@ -12,4 +12,4 @@ class Migration20250420050937 extends migrations_1.Migration {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.Migration20250420050937 = Migration20250420050937;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjAwNTA5MzcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjAwNTA5MzcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLHdYQUF3WCxDQUFDLENBQUM7UUFDdFksSUFBSSxDQUFDLE1BQU0sQ0FBQyx1SUFBdUksQ0FBQyxDQUFDO0lBQ3ZKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUVGO0FBWEQsMERBV0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250421010109 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250421010109 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`create table if not exists "membership_notification" ("id" text not null, "customer_id" text not null, "notification_key" text not null, "enable" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "membership_notification_pkey" primary key ("id"));`);
|
|
@@ -12,4 +12,4 @@ class Migration20250421010109 extends migrations_1.Migration {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.Migration20250421010109 = Migration20250421010109;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjEwMTAxMDkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjEwMTAxMDkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGtYQUFrWCxDQUFDLENBQUM7UUFDaFksSUFBSSxDQUFDLE1BQU0sQ0FBQyx5SUFBeUksQ0FBQyxDQUFDO0lBQ3pKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUVGO0FBWEQsMERBV0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250421011451 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250421011451 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_notification" drop constraint if exists "membership_notification_customer_id_notification_key_unique";`);
|
|
@@ -12,4 +12,4 @@ class Migration20250421011451 extends migrations_1.Migration {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.Migration20250421011451 = Migration20250421011451;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjEwMTE0NTEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjEwMTE0NTEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLDBJQUEwSSxDQUFDLENBQUM7UUFDeEosSUFBSSxDQUFDLE1BQU0sQ0FBQyw0TEFBNEwsQ0FBQyxDQUFDO0lBQzVNLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHlGQUF5RixDQUFDLENBQUM7SUFDekcsQ0FBQztDQUVGO0FBWEQsMERBV0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250422230822 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250422230822 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_config" add column if not exists "enable_membership_notification" boolean not null default true;`);
|
|
@@ -11,4 +11,4 @@ class Migration20250422230822 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250422230822 = Migration20250422230822;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjIyMzA4MjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjIyMzA4MjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLG9JQUFvSSxDQUFDLENBQUM7SUFDcEosQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsbUdBQW1HLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBRUY7QUFWRCwwREFVQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250423021328 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250423021328 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_consent_key" drop constraint if exists "membership_consent_key_name_unique";`);
|
|
@@ -20,4 +20,4 @@ class Migration20250423021328 extends migrations_1.Migration {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.Migration20250423021328 = Migration20250423021328;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjMwMjEzMjguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjMwMjEzMjgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGdIQUFnSCxDQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3VEFBd1QsQ0FBQyxDQUFDO1FBQ3RVLElBQUksQ0FBQyxNQUFNLENBQUMseUlBQXlJLENBQUMsQ0FBQztRQUN2SixJQUFJLENBQUMsTUFBTSxDQUFDLHVJQUF1SSxDQUFDLENBQUM7UUFFckosSUFBSSxDQUFDLE1BQU0sQ0FBQyxzV0FBc1csQ0FBQyxDQUFDO1FBQ3BYLElBQUksQ0FBQyxNQUFNLENBQUMsdUlBQXVJLENBQUMsQ0FBQztRQUNySixJQUFJLENBQUMsTUFBTSxDQUFDLCtIQUErSCxDQUFDLENBQUM7UUFFN0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxzTkFBc04sQ0FBQyxDQUFDO0lBQ3RPLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLG1IQUFtSCxDQUFDLENBQUM7UUFFakksSUFBSSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxNQUFNLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBRUY7QUF2QkQsMERBdUJDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250423021925 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250423021925 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_consent" drop constraint if exists "membership_consent_customer_id_consent_key_id_unique";`);
|
|
@@ -12,4 +12,4 @@ class Migration20250423021925 extends migrations_1.Migration {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.Migration20250423021925 = Migration20250423021925;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjMwMjE5MjUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjMwMjE5MjUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLDhIQUE4SCxDQUFDLENBQUM7UUFDNUksSUFBSSxDQUFDLE1BQU0sQ0FBQyw4S0FBOEssQ0FBQyxDQUFDO0lBQzlMLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLGtGQUFrRixDQUFDLENBQUM7SUFDbEcsQ0FBQztDQUVGO0FBWEQsMERBV0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250424011144 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250424011144 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_config" add column if not exists "enable_wishlist" boolean not null default true;`);
|
|
@@ -11,4 +11,4 @@ class Migration20250424011144 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250424011144 = Migration20250424011144;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjQwMTExNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA0MjQwMTExNDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLHFIQUFxSCxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztJQUNwRyxDQUFDO0NBRUY7QUFWRCwwREFVQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250507013347 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250507013347 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "membership_config" add column if not exists "enable_promotion_collection" boolean not null default true;`);
|
|
@@ -11,4 +11,4 @@ class Migration20250507013347 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250507013347 = Migration20250507013347;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MDcwMTMzNDcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZW1iZXJzaGlwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNTA1MDcwMTMzNDcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGlJQUFpSSxDQUFDLENBQUM7SUFDakosQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0dBQWdHLENBQUMsQ0FBQztJQUNoSCxDQUFDO0NBRUY7QUFWRCwwREFVQyJ9
|
|
@@ -57,6 +57,10 @@ class PromotionCacheService {
|
|
|
57
57
|
}
|
|
58
58
|
async invalidateKeys(keys) {
|
|
59
59
|
try {
|
|
60
|
+
if (keys.length === 0) {
|
|
61
|
+
this.logger.debug("No keys to invalidate, skipping");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
60
64
|
const fullKeys = keys.map((key) => `${this.prefix}${key}`);
|
|
61
65
|
await this.redis.del(...fullKeys);
|
|
62
66
|
}
|
|
@@ -123,4 +127,4 @@ class PromotionCacheService {
|
|
|
123
127
|
}
|
|
124
128
|
}
|
|
125
129
|
exports.default = PromotionCacheService;
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3Byb21vdGlvbi1jYWNoZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXNFO0FBQ3RFLHNEQUE4QztBQUU5QyxtREFBZ0Q7QUFRaEQsTUFBcUIscUJBQXFCO0lBTXhDLFlBQVksRUFBRSxFQUFFLFVBQWlDLEVBQUU7UUFKM0MsUUFBRyxHQUFXLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNqQyxXQUFNLEdBQVcsWUFBWSxDQUFDO1FBSXBDLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGlCQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUU7WUFDN0MsR0FBRyxPQUFPLENBQUMsWUFBWTtTQUN4QixDQUFDLENBQUM7UUFFSCxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDYiw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWEsRUFBRSxHQUFZO1FBQ2hELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxH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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250504044646 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250504044646 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "usable_promotion" drop constraint if exists "usable_promotion_promotion_id_unique";`);
|
|
@@ -14,4 +14,4 @@ class Migration20250504044646 extends migrations_1.Migration {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.Migration20250504044646 = Migration20250504044646;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MDQwNDQ2NDYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy91c2FibGUtcHJvbW8vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MDUwNDA0NDY0Ni50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBcUU7QUFFckUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUUzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsNEdBQTRHLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsTUFBTSxDQUFDLHFVQUFxVSxDQUFDLENBQUM7UUFDblYsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2SUFBNkksQ0FBQyxDQUFDO1FBQzNKLElBQUksQ0FBQyxNQUFNLENBQUMsMkhBQTJILENBQUMsQ0FBQztJQUMzSSxDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FFRjtBQWJELDBEQWFDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250424011114 = void 0;
|
|
4
|
-
const migrations_1 = require("@mikro-orm/migrations");
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
5
|
class Migration20250424011114 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "wishlist_item" drop constraint if exists "wishlist_item_product_variant_id_wishlist_id_unique";`);
|
|
@@ -20,4 +20,4 @@ class Migration20250424011114 extends migrations_1.Migration {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.Migration20250424011114 = Migration20250424011114;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MjQwMTExMTQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNDI0MDExMTE0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFxRTtBQUVyRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3SEFBd0gsQ0FBQyxDQUFDO1FBQ3RJLElBQUksQ0FBQyxNQUFNLENBQUMsK1BBQStQLENBQUMsQ0FBQztRQUM3USxJQUFJLENBQUMsTUFBTSxDQUFDLDJHQUEyRyxDQUFDLENBQUM7UUFFekgsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3VEFBd1QsQ0FBQyxDQUFDO1FBQ3RVLElBQUksQ0FBQyxNQUFNLENBQUMsdUhBQXVILENBQUMsQ0FBQztRQUNySSxJQUFJLENBQUMsTUFBTSxDQUFDLHFIQUFxSCxDQUFDLENBQUM7UUFDbkksSUFBSSxDQUFDLE1BQU0sQ0FBQyw0S0FBNEssQ0FBQyxDQUFDO1FBRTFMLElBQUksQ0FBQyxNQUFNLENBQUMsaU1BQWlNLENBQUMsQ0FBQztJQUNqTixDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzR0FBc0csQ0FBQyxDQUFDO1FBRXBILElBQUksQ0FBQyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUVGO0FBdkJELDBEQXVCQyJ9
|
|
@@ -2,11 +2,40 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.config = void 0;
|
|
4
4
|
exports.default = customerCreatedHandler;
|
|
5
|
-
const
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
6
|
const create_membership_consent_1 = require("../workflows/membership-consent/create-membership-consent");
|
|
7
7
|
const create_membership_notification_1 = require("../workflows/membership-notification/create-membership-notification");
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const create_membership_1 = require("../workflows/membership/create-membership");
|
|
9
|
+
async function customerCreatedHandler({ event: { data }, container, }) {
|
|
10
|
+
const logger = container.resolve("logger");
|
|
11
|
+
try {
|
|
12
|
+
// Create membership for the new customer
|
|
13
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
14
|
+
// Check if membership is enabled in store configuration
|
|
15
|
+
const { data: [store], } = await query.graph({
|
|
16
|
+
entity: "store",
|
|
17
|
+
fields: ["id", "membership_config.*"],
|
|
18
|
+
});
|
|
19
|
+
if (store?.membership_config?.enable_membership) {
|
|
20
|
+
logger.log(`[Membership] Creating membership for new customer ${data.id}`);
|
|
21
|
+
// Create membership with 0 points (customer starts at the lowest tier)
|
|
22
|
+
await create_membership_1.createMembershipWorkflow.run({
|
|
23
|
+
input: {
|
|
24
|
+
customer_id: data.id,
|
|
25
|
+
points: 0,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
logger.log(`[Membership] Successfully created membership for customer ${data.id}`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
logger.log(`[Membership] Membership is disabled in store configuration, skipping membership creation for customer ${data.id}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
logger.error(`[Membership] Error creating membership for customer ${data.id}:`, error);
|
|
36
|
+
// Don't throw error to avoid blocking customer creation flow
|
|
37
|
+
}
|
|
38
|
+
// Continue with existing notification and consent workflows
|
|
10
39
|
await create_membership_notification_1.createMembershipNotificationWorkflow.run({
|
|
11
40
|
input: {
|
|
12
41
|
customer_id: data.id,
|
|
@@ -23,4 +52,4 @@ async function customerCreatedHandler({ event: { data }, }) {
|
|
|
23
52
|
exports.config = {
|
|
24
53
|
event: `customer.created`,
|
|
25
54
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY3JlYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9jdXN0b21lci1jcmVhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLHlDQW9EQztBQXpERCxxREFBc0U7QUFDdEUseUdBQTRHO0FBQzVHLHdIQUEySDtBQUMzSCxpRkFBcUY7QUFFdEUsS0FBSyxVQUFVLHNCQUFzQixDQUFDLEVBQ25ELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUNmLFNBQVMsR0FDc0I7SUFDL0IsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUM7UUFDSCx5Q0FBeUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSx3REFBd0Q7UUFDeEQsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUNkLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLENBQUM7WUFDaEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFM0UsdUVBQXVFO1lBQ3ZFLE1BQU0sNENBQXdCLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxLQUFLLEVBQUU7b0JBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNwQixNQUFNLEVBQUUsQ0FBQztpQkFDVjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsNkRBQTZELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyx5R0FBeUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakksQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZGLDZEQUE2RDtJQUMvRCxDQUFDO0lBRUQsNERBQTREO0lBQzVELE1BQU0scUVBQW9DLENBQUMsR0FBRyxDQUFDO1FBQzdDLEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMscUNBQXFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTNELE1BQU0sMkRBQStCLENBQUMsR0FBRyxDQUFDO1FBQ3hDLEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBcUI7SUFDdEMsS0FBSyxFQUFFLGtCQUFrQjtDQUMxQixDQUFDIn0=
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = orderCanceledHandler;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const void_membership_points_1 = require("../workflows/membership/void-membership-points");
|
|
7
|
+
async function orderCanceledHandler({ event: { data }, container, }) {
|
|
8
|
+
try {
|
|
9
|
+
console.log(`[Membership] Processing order.canceled event for order: ${data.id}`);
|
|
10
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
// Get order details
|
|
12
|
+
const { data: orders, } = await query.graph({
|
|
13
|
+
entity: "order",
|
|
14
|
+
fields: ["id", "customer_id", "status"],
|
|
15
|
+
filters: {
|
|
16
|
+
id: data.id,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
if (!orders?.length) {
|
|
20
|
+
console.error(`[Membership] Order ${data.id} not found`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const order = orders[0];
|
|
24
|
+
console.log(`[Membership] Order details - ID: ${order.id}, Status: ${order.status}, Customer: ${order.customer_id}`);
|
|
25
|
+
// Check if customer exists
|
|
26
|
+
if (!order.customer_id) {
|
|
27
|
+
console.log(`[Membership] Order ${order.id} has no customer (guest checkout), skipping void points`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Void membership points for this canceled order
|
|
31
|
+
await void_membership_points_1.voidMembershipPointsWorkflow.run({
|
|
32
|
+
input: {
|
|
33
|
+
customer_id: order.customer_id,
|
|
34
|
+
order_id: order.id,
|
|
35
|
+
reason: "order_canceled",
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
console.log(`[Membership] Successfully processed cancellation for order ${order.id}`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`[Membership] Error processing order.canceled for order ${data.id}:`, error);
|
|
42
|
+
// Don't throw error to avoid blocking order flow
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.config = {
|
|
46
|
+
event: `order.canceled`,
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY2FuY2VsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvb3JkZXItY2FuY2VsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsdUNBZ0RDO0FBbkRELHFEQUFzRTtBQUN0RSwyRkFBOEY7QUFFL0UsS0FBSyxVQUFVLG9CQUFvQixDQUFDLEVBQ2pELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUNmLFNBQVMsR0FDc0I7SUFDL0IsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQywyREFBMkQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEYsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxvQkFBb0I7UUFDcEIsTUFBTSxFQUNKLElBQUksRUFBRSxNQUFNLEdBQ2IsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDcEIsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQztZQUN2QyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEtBQUssQ0FBQyxFQUFFLGFBQWEsS0FBSyxDQUFDLE1BQU0sZUFBZSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVySCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixLQUFLLENBQUMsRUFBRSx5REFBeUQsQ0FBQyxDQUFDO1lBQ3JHLE9BQU87UUFDVCxDQUFDO1FBRUQsaURBQWlEO1FBQ2pELE1BQU0scURBQTRCLENBQUMsR0FBRyxDQUFDO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxFQUFFLGdCQUFnQjthQUN6QjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsOERBQThELEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNGLGlEQUFpRDtJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsZ0JBQWdCO0NBQ3hCLENBQUMifQ==
|
|
@@ -5,23 +5,69 @@ exports.default = orderCompletedHandler;
|
|
|
5
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
6
|
const add_membership_points_1 = require("../workflows/membership/add-membership-points");
|
|
7
7
|
async function orderCompletedHandler({ event: { data }, container, }) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
try {
|
|
9
|
+
console.log(`[Membership] ======= ORDER COMPLETED EVENT RECEIVED =======`);
|
|
10
|
+
console.log(`[Membership] Processing order.completed event for order: ${data.id}`);
|
|
11
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
12
|
+
const { data: orders, } = await query.graph({
|
|
13
|
+
entity: "order",
|
|
14
|
+
fields: ["id", "total", "subtotal", "customer_id", "status"],
|
|
15
|
+
filters: {
|
|
16
|
+
id: data.id,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
if (!orders?.length) {
|
|
20
|
+
console.error(`[Membership] Order ${data.id} not found`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const order = orders[0];
|
|
24
|
+
console.log(`[Membership] Order details - ID: ${order.id}, Status: ${order.status}, Customer: ${order.customer_id}, Total: ${order.total}`);
|
|
25
|
+
// Check if customer exists
|
|
26
|
+
if (!order.customer_id) {
|
|
27
|
+
console.log(`[Membership] Order ${order.id} has no customer (guest checkout), skipping membership points`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Check if points were already added for this order (to avoid double points)
|
|
31
|
+
// This check is important because points should be added on payment_captured event
|
|
32
|
+
const { data: membershipTransactions } = await query.graph({
|
|
33
|
+
entity: "membership_transaction",
|
|
34
|
+
fields: ["id", "source", "points"],
|
|
35
|
+
filters: {
|
|
36
|
+
source: `order: ${order.id}`,
|
|
37
|
+
customer_id: order.customer_id,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
if (membershipTransactions && membershipTransactions.length > 0) {
|
|
41
|
+
// Check if there are positive points (not voided)
|
|
42
|
+
const hasPositivePoints = membershipTransactions.some(t => t.points > 0);
|
|
43
|
+
if (hasPositivePoints) {
|
|
44
|
+
console.log(`[Membership] Points already added for order ${order.id} (likely via payment_captured event), skipping to avoid duplication`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Use subtotal instead of total to exclude shipping/taxes from points calculation
|
|
49
|
+
const spending = order.subtotal || order.total || 0;
|
|
50
|
+
if (spending <= 0) {
|
|
51
|
+
console.log(`[Membership] Order ${order.id} has no spending amount, skipping membership points`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
console.log(`[Membership] Adding membership points for customer ${order.customer_id}, spending: ${spending}`);
|
|
55
|
+
await add_membership_points_1.addMemberShipPointsWorkflow.run({
|
|
56
|
+
input: {
|
|
57
|
+
customer_id: order.customer_id,
|
|
58
|
+
spending: spending,
|
|
59
|
+
source: `order: ${order.id}`,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
console.log(`[Membership] Successfully added membership points for order ${order.id}`);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error(`[Membership] Error processing order.completed for order ${data.id}:`, error);
|
|
66
|
+
// Don't throw error to avoid blocking order flow
|
|
67
|
+
// Membership points can be added manually if needed
|
|
68
|
+
}
|
|
23
69
|
}
|
|
24
70
|
exports.config = {
|
|
25
71
|
event: `order.completed`,
|
|
26
72
|
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY29tcGxldGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWNvbXBsZXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSx3Q0E2RUM7QUFoRkQscURBQXNFO0FBQ3RFLHlGQUE0RjtBQUU3RSxLQUFLLFVBQVUscUJBQXFCLENBQUMsRUFDbEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQ2YsU0FBUyxHQUNzQjtJQUMvQixJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0REFBNEQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkYsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLEVBQ0osSUFBSSxFQUFFLE1BQU0sR0FDYixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUM7WUFDNUQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTthQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxLQUFLLENBQUMsRUFBRSxhQUFhLEtBQUssQ0FBQyxNQUFNLGVBQWUsS0FBSyxDQUFDLFdBQVcsWUFBWSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU1SSwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixLQUFLLENBQUMsRUFBRSwrREFBK0QsQ0FBQyxDQUFDO1lBQzNHLE9BQU87UUFDVCxDQUFDO1FBRUQsNkVBQTZFO1FBQzdFLG1GQUFtRjtRQUNuRixNQUFNLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3pELE1BQU0sRUFBRSx3QkFBd0I7WUFDaEMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDbEMsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxVQUFVLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVzthQUMvQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksc0JBQXNCLElBQUksc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hFLGtEQUFrRDtZQUNsRCxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxLQUFLLENBQUMsRUFBRSxxRUFBcUUsQ0FBQyxDQUFDO2dCQUMxSSxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxrRkFBa0Y7UUFDbEYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixLQUFLLENBQUMsRUFBRSxxREFBcUQsQ0FBQyxDQUFDO1lBQ2pHLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsS0FBSyxDQUFDLFdBQVcsZUFBZSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTlHLE1BQU0sbURBQTJCLENBQUMsR0FBRyxDQUFDO1lBQ3BDLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixNQUFNLEVBQUUsVUFBVSxLQUFLLENBQUMsRUFBRSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQywrREFBK0QsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUYsaURBQWlEO1FBQ2pELG9EQUFvRDtJQUN0RCxDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsaUJBQWlCO0NBQ3pCLENBQUMifQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = orderFulfilledHandler;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const add_membership_points_1 = require("../workflows/membership/add-membership-points");
|
|
7
|
+
async function orderFulfilledHandler({ event: { data }, container, }) {
|
|
8
|
+
try {
|
|
9
|
+
console.log(`[Membership] Processing order.fulfilled event for order: ${data.id}`);
|
|
10
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
// Get order details and check if points were already added
|
|
12
|
+
const { data: orders, } = await query.graph({
|
|
13
|
+
entity: "order",
|
|
14
|
+
fields: ["id", "total", "subtotal", "customer_id", "status", "metadata"],
|
|
15
|
+
filters: {
|
|
16
|
+
id: data.id,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
if (!orders?.length) {
|
|
20
|
+
console.error(`[Membership] Order ${data.id} not found`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const order = orders[0];
|
|
24
|
+
console.log(`[Membership] Order details - ID: ${order.id}, Status: ${order.status}, Customer: ${order.customer_id}, Total: ${order.total}`);
|
|
25
|
+
// Check if customer exists
|
|
26
|
+
if (!order.customer_id) {
|
|
27
|
+
console.log(`[Membership] Order ${order.id} has no customer (guest checkout), skipping membership points`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Check if points were already added for this order (to avoid double points)
|
|
31
|
+
const { data: membershipTransactions } = await query.graph({
|
|
32
|
+
entity: "membership_transaction",
|
|
33
|
+
fields: ["id", "source"],
|
|
34
|
+
filters: {
|
|
35
|
+
source: `order: ${order.id}`,
|
|
36
|
+
customer_id: order.customer_id,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (membershipTransactions?.length > 0) {
|
|
40
|
+
console.log(`[Membership] Points already added for order ${order.id}, skipping to avoid duplication`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Use subtotal instead of total to exclude shipping/taxes from points calculation
|
|
44
|
+
const spending = order.subtotal || order.total || 0;
|
|
45
|
+
if (spending <= 0) {
|
|
46
|
+
console.log(`[Membership] Order ${order.id} has no spending amount, skipping membership points`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.log(`[Membership] Adding membership points for customer ${order.customer_id}, spending: ${spending}`);
|
|
50
|
+
await add_membership_points_1.addMemberShipPointsWorkflow.run({
|
|
51
|
+
input: {
|
|
52
|
+
customer_id: order.customer_id,
|
|
53
|
+
spending: spending,
|
|
54
|
+
source: `order: ${order.id}`,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
console.log(`[Membership] Successfully added membership points for fulfilled order ${order.id}`);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`[Membership] Error processing order.fulfilled for order ${data.id}:`, error);
|
|
61
|
+
// Don't throw error to avoid blocking order flow
|
|
62
|
+
// Membership points can be added manually if needed
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.config = {
|
|
66
|
+
event: `order.fulfilled`,
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWZ1bGZpbGxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSx3Q0F5RUM7QUE1RUQscURBQXNFO0FBQ3RFLHlGQUE0RjtBQUU3RSxLQUFLLFVBQVUscUJBQXFCLENBQUMsRUFDbEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQ2YsU0FBUyxHQUNzQjtJQUMvQixJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLDREQUE0RCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLDJEQUEyRDtRQUMzRCxNQUFNLEVBQ0osSUFBSSxFQUFFLE1BQU0sR0FDYixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO1lBQ3hFLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7YUFDWjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDekQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsS0FBSyxDQUFDLEVBQUUsYUFBYSxLQUFLLENBQUMsTUFBTSxlQUFlLEtBQUssQ0FBQyxXQUFXLFlBQVksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFNUksMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsS0FBSyxDQUFDLEVBQUUsK0RBQStELENBQUMsQ0FBQztZQUMzRyxPQUFPO1FBQ1QsQ0FBQztRQUVELDZFQUE2RTtRQUM3RSxNQUFNLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3pELE1BQU0sRUFBRSx3QkFBd0I7WUFDaEMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUN4QixPQUFPLEVBQUU7Z0JBQ1AsTUFBTSxFQUFFLFVBQVUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDNUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsS0FBSyxDQUFDLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztZQUN0RyxPQUFPO1FBQ1QsQ0FBQztRQUVELGtGQUFrRjtRQUNsRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRXBELElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxFQUFFLHFEQUFxRCxDQUFDLENBQUM7WUFDakcsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxLQUFLLENBQUMsV0FBVyxlQUFlLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUcsTUFBTSxtREFBMkIsQ0FBQyxHQUFHLENBQUM7WUFDcEMsS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE1BQU0sRUFBRSxVQUFVLEtBQUssQ0FBQyxFQUFFLEVBQUU7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLHlFQUF5RSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkRBQTJELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RixpREFBaUQ7UUFDakQsb0RBQW9EO0lBQ3RELENBQUM7QUFDSCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSxpQkFBaUI7Q0FDekIsQ0FBQyJ9
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = paymentCapturedHandler;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const add_membership_points_1 = require("../workflows/membership/add-membership-points");
|
|
7
|
+
async function paymentCapturedHandler({ event: { data }, container, }) {
|
|
8
|
+
try {
|
|
9
|
+
console.log(`[Membership] ======= PAYMENT CAPTURED EVENT RECEIVED =======`);
|
|
10
|
+
console.log(`[Membership] Processing payment.captured event for payment: ${data.id}`);
|
|
11
|
+
console.log(`[Membership] Raw event data:`, JSON.stringify(data, null, 2));
|
|
12
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
// Get payment with payment collection
|
|
14
|
+
const { data: payments } = await query.graph({
|
|
15
|
+
entity: "payment",
|
|
16
|
+
fields: ["id", "amount", "payment_collection_id"],
|
|
17
|
+
filters: {
|
|
18
|
+
id: data.id,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
console.log(`[Membership] Payment query result:`, JSON.stringify(payments, null, 2));
|
|
22
|
+
if (!payments?.length) {
|
|
23
|
+
console.log(`[Membership] Payment ${data.id} not found, skipping membership points`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const payment = payments[0];
|
|
27
|
+
if (!payment.payment_collection_id) {
|
|
28
|
+
console.log(`[Membership] Payment ${data.id} has no payment_collection_id, skipping membership points`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Get payment collection with linked order using Medusa v2 link module
|
|
32
|
+
const { data: paymentCollections } = await query.graph({
|
|
33
|
+
entity: "payment_collection",
|
|
34
|
+
fields: [
|
|
35
|
+
"id",
|
|
36
|
+
"order.id",
|
|
37
|
+
"order.customer_id",
|
|
38
|
+
"order.status",
|
|
39
|
+
"order.total",
|
|
40
|
+
"order.subtotal",
|
|
41
|
+
],
|
|
42
|
+
filters: {
|
|
43
|
+
id: payment.payment_collection_id,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
console.log(`[Membership] Payment collection query result:`, JSON.stringify(paymentCollections, null, 2));
|
|
47
|
+
if (!paymentCollections?.length) {
|
|
48
|
+
console.log(`[Membership] Payment collection ${payment.payment_collection_id} not found, skipping membership points`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const paymentCollection = paymentCollections[0];
|
|
52
|
+
// Get order from the linked data
|
|
53
|
+
const order = paymentCollection.order;
|
|
54
|
+
if (!order || !order.id) {
|
|
55
|
+
console.log(`[Membership] Payment collection ${payment.payment_collection_id} has no linked order, skipping membership points`);
|
|
56
|
+
console.log(`[Membership] Payment collection details:`, JSON.stringify(paymentCollection, null, 2));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const orderId = order.id;
|
|
60
|
+
console.log(`[Membership] Payment ${payment.id} associated with order ${orderId}`);
|
|
61
|
+
// Check if customer exists
|
|
62
|
+
if (!order.customer_id) {
|
|
63
|
+
console.log(`[Membership] Order ${order.id} has no customer (guest checkout), skipping membership points`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
console.log(`[Membership] Order details - ID: ${order.id}, Status: ${order.status}, Customer: ${order.customer_id}, Total: ${order.total}`);
|
|
67
|
+
// Check if points were already added for this order (to avoid double points)
|
|
68
|
+
const { data: membershipTransactions } = await query.graph({
|
|
69
|
+
entity: "membership_transaction",
|
|
70
|
+
fields: ["id", "source", "points"],
|
|
71
|
+
filters: {
|
|
72
|
+
source: `order: ${order.id}`,
|
|
73
|
+
customer_id: order.customer_id,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
if (membershipTransactions && membershipTransactions.length > 0) {
|
|
77
|
+
// Check if there are positive points (not voided)
|
|
78
|
+
const hasPositivePoints = membershipTransactions.some((t) => t.points > 0);
|
|
79
|
+
if (hasPositivePoints) {
|
|
80
|
+
console.log(`[Membership] Points already added for order ${order.id}, skipping to avoid duplication`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Use subtotal instead of total to exclude shipping/taxes from points calculation
|
|
85
|
+
const spending = order.subtotal || order.total || 0;
|
|
86
|
+
if (spending <= 0) {
|
|
87
|
+
console.log(`[Membership] Order ${order.id} has no spending amount, skipping membership points`);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
console.log(`[Membership] Adding membership points for customer ${order.customer_id}, spending: ${spending}`);
|
|
91
|
+
await add_membership_points_1.addMemberShipPointsWorkflow.run({
|
|
92
|
+
input: {
|
|
93
|
+
customer_id: order.customer_id,
|
|
94
|
+
spending: spending,
|
|
95
|
+
source: `order: ${order.id}`,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
console.log(`[Membership] Successfully added membership points for paid order ${order.id}`);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(`[Membership] Error processing payment.captured for payment ${data.id}:`, error);
|
|
102
|
+
console.error(`[Membership] Error stack:`, error.stack);
|
|
103
|
+
console.error(`[Membership] Error details:`, JSON.stringify(error, Object.getOwnPropertyNames(error)));
|
|
104
|
+
// Don't throw error to avoid blocking order flow
|
|
105
|
+
// Membership points can be added manually if needed
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.config = {
|
|
109
|
+
event: `payment.captured`,
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcGF5bWVudC1jYXB0dXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9vcmRlci1wYXltZW50LWNhcHR1cmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHlDQXFLQztBQXhLRCxxREFBK0U7QUFDL0UseUZBQTRGO0FBRTdFLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ3NCO0lBQy9CLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsOERBQThELENBQUMsQ0FBQztRQUM1RSxPQUFPLENBQUMsR0FBRyxDQUNULCtEQUErRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ3pFLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakUsc0NBQXNDO1FBQ3RDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsdUJBQXVCLENBQUM7WUFDakQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTthQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvQ0FBb0MsRUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNsQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsRUFB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
|