@kb0912/notification-brevo 1.0.16 → 2.0.0
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/admin/index.js +1004 -3
- package/.medusa/server/src/admin/index.mjs +1004 -3
- package/.medusa/server/src/api/admin/brevo-plugin-settings/analytics/route.js +78 -0
- package/.medusa/server/src/api/admin/brevo-plugin-settings/route.js +27 -0
- package/.medusa/server/src/api/hooks/brevo-webhook/route.js +40 -0
- package/.medusa/server/src/jobs/abandoned-cart.js +5 -11
- package/.medusa/server/src/jobs/promotion-expiry-reminder.js +122 -0
- package/.medusa/server/src/jobs/review-request.js +106 -0
- package/.medusa/server/src/jobs/winback.js +108 -0
- package/.medusa/server/src/modules/brevo-settings/index.js +13 -0
- package/.medusa/server/src/modules/brevo-settings/migrations/Migration20260306173214.js +15 -0
- package/.medusa/server/src/modules/brevo-settings/migrations/Migration20260307045432.js +14 -0
- package/.medusa/server/src/modules/brevo-settings/migrations/Migration20260307075811.js +14 -0
- package/.medusa/server/src/modules/brevo-settings/models/brevo-settings.js +79 -0
- package/.medusa/server/src/modules/brevo-settings/service.js +114 -0
- package/.medusa/server/src/providers/notifications-brevo/services.js +321 -176
- package/.medusa/server/src/workflows/index.js +25 -0
- package/.medusa/server/src/workflows/send-abandoned-cart.js +37 -8
- package/.medusa/server/src/workflows/send-customer-created.js +159 -4
- package/.medusa/server/src/workflows/send-order-canceled.js +27 -3
- package/.medusa/server/src/workflows/send-order-confirmation.js +63 -10
- package/.medusa/server/src/workflows/send-order-delivered.js +52 -0
- package/.medusa/server/src/workflows/send-review-request.js +37 -0
- package/.medusa/server/src/workflows/send-shipment-confirmation.js +33 -10
- package/.medusa/server/src/workflows/send-winback.js +34 -0
- package/.medusa/server/src/workflows/steps/check-abandoned-carts.js +184 -58
- package/.medusa/server/src/workflows/steps/resolve-locale.js +25 -0
- package/.medusa/server/src/workflows/steps/send-multi-channel.js +81 -0
- package/.medusa/server/src/workflows/steps/send-notification.js +1 -1
- package/.medusa/server/src/workflows/steps/sync-brevo-contact.js +57 -0
- package/.medusa/server/src/workflows/steps/track-brevo-event.js +47 -0
- package/README.md +315 -60
- package/package.json +21 -23
- package/.medusa/server/src/api/admin/plugin/route.js +0 -7
- package/.medusa/server/src/config.js +0 -12
- package/.medusa/server/src/loaders/brevo.js +0 -13
- package/.medusa/server/src/subscribers/password-reset.js +0 -18
- package/.medusa/server/src/subscribers/promotion-new-customer-created.js +0 -21
- package/.medusa/server/src/workflows/send-password-reset.js +0 -30
- package/.medusa/server/src/workflows/send-promotion-notification.js +0 -24
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./send-order-confirmation"), exports);
|
|
18
|
+
__exportStar(require("./send-order-canceled"), exports);
|
|
19
|
+
__exportStar(require("./send-order-delivered"), exports);
|
|
20
|
+
__exportStar(require("./send-customer-created"), exports);
|
|
21
|
+
__exportStar(require("./send-shipment-confirmation"), exports);
|
|
22
|
+
__exportStar(require("./send-abandoned-cart"), exports);
|
|
23
|
+
__exportStar(require("./send-review-request"), exports);
|
|
24
|
+
__exportStar(require("./send-winback"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBeUM7QUFDekMsd0RBQXFDO0FBQ3JDLHlEQUFzQztBQUN0QywwREFBdUM7QUFDdkMsK0RBQTRDO0FBQzVDLHdEQUFxQztBQUNyQyx3REFBcUM7QUFDckMsaURBQThCIn0=
|
|
@@ -4,30 +4,59 @@ exports.sendAbandonedCartWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
6
|
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
-
|
|
7
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
8
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
9
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-abandoned-cart", async (_, { container }) => {
|
|
10
|
+
try {
|
|
11
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
12
|
+
const settings = await brevoSettingsService.getSettings();
|
|
13
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return new workflows_sdk_1.StepResponse({});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
exports.sendAbandonedCartWorkflow = (0, workflows_sdk_1.createWorkflow)("send-abandoned-cart", (input) => {
|
|
20
|
+
const settings = loadSettingsStep();
|
|
8
21
|
const { data: carts } = (0, core_flows_1.useQueryGraphStep)({
|
|
9
22
|
entity: "cart",
|
|
10
23
|
fields: [
|
|
11
24
|
"id",
|
|
12
25
|
"email",
|
|
13
26
|
"created_at",
|
|
27
|
+
"metadata",
|
|
14
28
|
"customer.first_name",
|
|
15
29
|
"customer.last_name",
|
|
16
30
|
"customer.phone",
|
|
31
|
+
"customer.metadata",
|
|
17
32
|
"currency_code",
|
|
18
|
-
"items.*"
|
|
33
|
+
"items.*",
|
|
19
34
|
],
|
|
20
|
-
filters: { id: cartId },
|
|
35
|
+
filters: { id: input.cartId },
|
|
36
|
+
});
|
|
37
|
+
// Resolve locale from customer or cart metadata
|
|
38
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
39
|
+
customerMetadata: carts[0].customer?.metadata,
|
|
40
|
+
cartMetadata: carts[0].metadata,
|
|
21
41
|
});
|
|
42
|
+
const template = input._useDiscountTemplate ? "cart.abandoned.discount" : "cart.abandoned";
|
|
22
43
|
const notificationData = [
|
|
23
44
|
{
|
|
24
45
|
to: carts[0].email,
|
|
25
46
|
channel: "email",
|
|
26
|
-
template
|
|
27
|
-
data: {
|
|
47
|
+
template,
|
|
48
|
+
data: {
|
|
49
|
+
cart: carts[0],
|
|
50
|
+
promotion_code: input.promotion_code,
|
|
51
|
+
discount_value: input.discount_value,
|
|
52
|
+
discount_type: input.discount_type,
|
|
53
|
+
discount_expires_at: input.discount_expires_at,
|
|
54
|
+
_settings: settings,
|
|
55
|
+
_locale: locale,
|
|
56
|
+
},
|
|
28
57
|
},
|
|
29
58
|
];
|
|
30
|
-
const
|
|
31
|
-
return new workflows_sdk_1.WorkflowResponse(
|
|
59
|
+
const notification = (0, send_notification_1.sendNotificationStep)(notificationData);
|
|
60
|
+
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
32
61
|
});
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1hYmFuZG9uZWQtY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc2VuZC1hYmFuZG9uZWQtY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMEM7QUFDMUMsNERBQStEO0FBQy9ELGlFQUFnRTtBQUNoRSwyREFBMEQ7QUFFMUQsOERBQWlFO0FBV2pFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUNqQyxrQ0FBa0MsRUFDbEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7UUFDMUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RCxPQUFPLElBQUksNEJBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0IsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBO0FBRVksUUFBQSx5QkFBeUIsR0FBRyxJQUFBLDhCQUFjLEVBQ3JELHFCQUFxQixFQUNyQixDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUN2QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsRUFBRSxDQUFBO0lBRW5DLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN4QyxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixPQUFPO1lBQ1AsWUFBWTtZQUNaLFVBQVU7WUFDVixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLFNBQVM7U0FDVjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO0tBQzlCLENBQUMsQ0FBQTtJQUVGLGdEQUFnRDtJQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFpQixFQUFDO1FBQy9CLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUTtRQUM3QyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7S0FDaEMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUE7SUFFMUYsTUFBTSxnQkFBZ0IsR0FBNEI7UUFDaEQ7WUFDRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDbEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsUUFBUTtZQUNSLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDZCxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7Z0JBQ3BDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztnQkFDcEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dCQUNsQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO2dCQUM5QyxTQUFTLEVBQUUsUUFBUTtnQkFDbkIsT0FBTyxFQUFFLE1BQU07YUFDaEI7U0FDRjtLQUNGLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLHdDQUFvQixFQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDM0QsT0FBTyxJQUFJLGdDQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQzNDLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -4,21 +4,176 @@ exports.sendCustomerCreatedWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
6
|
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
+
const sync_brevo_contact_1 = require("./steps/sync-brevo-contact");
|
|
8
|
+
const track_brevo_event_1 = require("./steps/track-brevo-event");
|
|
9
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
10
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
11
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-customer-created", async (_, { container }) => {
|
|
12
|
+
try {
|
|
13
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
14
|
+
const settings = await brevoSettingsService.getSettings();
|
|
15
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return new workflows_sdk_1.StepResponse({});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Combined step: Auto-create a promotion AND send the promotion email.
|
|
23
|
+
* Must be a single step because Medusa workflow DAG is static —
|
|
24
|
+
* you cannot access step output properties (e.g. promoResult.promotion_code)
|
|
25
|
+
* at workflow composition time.
|
|
26
|
+
*/
|
|
27
|
+
const autoCreateAndSendPromotionStep = (0, workflows_sdk_1.createStep)("auto-create-and-send-promotion", async (input, { container }) => {
|
|
28
|
+
const logger = container.resolve("logger");
|
|
29
|
+
let settings;
|
|
30
|
+
try {
|
|
31
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
32
|
+
settings = await brevoSettingsService.getSettings();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return new workflows_sdk_1.StepResponse(null);
|
|
36
|
+
}
|
|
37
|
+
if (!settings?.promotion_auto_create) {
|
|
38
|
+
return new workflows_sdk_1.StepResponse(null);
|
|
39
|
+
}
|
|
40
|
+
// Skip if customer doesn't have an account (guest)
|
|
41
|
+
if (!input.hasAccount) {
|
|
42
|
+
logger.info(`[Brevo] Skipping welcome promotion for ${input.email}: no account`);
|
|
43
|
+
return new workflows_sdk_1.StepResponse(null);
|
|
44
|
+
}
|
|
45
|
+
// Skip if phone is Vietnamese (+84 or 84)
|
|
46
|
+
if (input.phone?.startsWith("+84") || input.phone?.startsWith("84")) {
|
|
47
|
+
logger.info(`[Brevo] Skipping welcome promotion for ${input.email}: VN phone`);
|
|
48
|
+
return new workflows_sdk_1.StepResponse(null);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const promotionService = container.resolve("promotion");
|
|
52
|
+
const customerService = container.resolve("customer");
|
|
53
|
+
const discountType = settings.promotion_discount_type || "percentage";
|
|
54
|
+
const discountValue = settings.promotion_discount_value || 10;
|
|
55
|
+
const expiryDays = settings.promotion_expiry_days || 30;
|
|
56
|
+
const isPercentage = discountType === "percentage";
|
|
57
|
+
const excludedCurrencies = Array.isArray(settings.promotion_excluded_currencies)
|
|
58
|
+
? settings.promotion_excluded_currencies : [];
|
|
59
|
+
const codePrefix = (settings.promotion_code_prefix || "WELCOME").toUpperCase();
|
|
60
|
+
// Generate unique 8-char alphanumeric suffix
|
|
61
|
+
const chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; // no I/O/0/1 to avoid confusion
|
|
62
|
+
let suffix = "";
|
|
63
|
+
for (let i = 0; i < 8; i++)
|
|
64
|
+
suffix += chars[Math.floor(Math.random() * chars.length)];
|
|
65
|
+
const code = `${codePrefix}-${suffix}`;
|
|
66
|
+
const startsAt = new Date();
|
|
67
|
+
const endsAt = new Date(Date.now() + expiryDays * 24 * 60 * 60 * 1000);
|
|
68
|
+
// Build promotion rules
|
|
69
|
+
const rules = [
|
|
70
|
+
// Lock to this specific customer
|
|
71
|
+
{ attribute: "customer_id", operator: "eq", values: [input.customerId] },
|
|
72
|
+
];
|
|
73
|
+
// Exclude currencies
|
|
74
|
+
for (const cur of excludedCurrencies) {
|
|
75
|
+
rules.push({ attribute: "currency_code", operator: "ne", values: [cur] });
|
|
76
|
+
}
|
|
77
|
+
await promotionService.createPromotions({
|
|
78
|
+
code,
|
|
79
|
+
type: "standard",
|
|
80
|
+
is_automatic: true,
|
|
81
|
+
status: "active",
|
|
82
|
+
rules,
|
|
83
|
+
campaign: {
|
|
84
|
+
name: `Welcome - ${input.email}`,
|
|
85
|
+
campaign_identifier: `welcome-${code}`,
|
|
86
|
+
starts_at: startsAt,
|
|
87
|
+
ends_at: endsAt,
|
|
88
|
+
budget: { type: "usage", limit: 1 },
|
|
89
|
+
},
|
|
90
|
+
application_method: {
|
|
91
|
+
type: isPercentage ? "percentage" : "fixed",
|
|
92
|
+
value: discountValue,
|
|
93
|
+
target_type: "order",
|
|
94
|
+
max_quantity: 1,
|
|
95
|
+
currency_code: isPercentage ? undefined : (input.currencyCode || "usd"),
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
// Store in customer metadata for expiry reminder tracking
|
|
99
|
+
await customerService.updateCustomers(input.customerId, {
|
|
100
|
+
metadata: {
|
|
101
|
+
welcome_promotion_code: code,
|
|
102
|
+
welcome_promotion_expires_at: endsAt.toISOString(),
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
logger.info(`[Brevo] Created welcome promotion ${code} for ${input.email}`);
|
|
106
|
+
// Send the promotion email
|
|
107
|
+
const notificationService = container.resolve("notification");
|
|
108
|
+
await notificationService.createNotifications({
|
|
109
|
+
to: input.email,
|
|
110
|
+
channel: "email",
|
|
111
|
+
template: "promotion-new-customer",
|
|
112
|
+
data: {
|
|
113
|
+
first_name: input.firstName,
|
|
114
|
+
last_name: input.lastName,
|
|
115
|
+
promotion_code: code,
|
|
116
|
+
discount_value: discountValue,
|
|
117
|
+
discount_type: discountType,
|
|
118
|
+
ends_at: endsAt.toISOString(),
|
|
119
|
+
_settings: settings,
|
|
120
|
+
_locale: input.locale,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
logger.info(`[Brevo] Promotion email sent to ${input.email} with code ${code}`);
|
|
124
|
+
return new workflows_sdk_1.StepResponse({ promotion_code: code });
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
logger.error(`[Brevo] Auto-create promotion failed: ${error?.message}`);
|
|
128
|
+
return new workflows_sdk_1.StepResponse(null);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
7
131
|
exports.sendCustomerCreatedWorkflow = (0, workflows_sdk_1.createWorkflow)("send-customer-created", ({ id }) => {
|
|
132
|
+
const settings = loadSettingsStep();
|
|
8
133
|
const { data: customers } = (0, core_flows_1.useQueryGraphStep)({
|
|
9
134
|
entity: "customer",
|
|
10
|
-
fields: ["*", "first_name", "last_name", "phone"],
|
|
135
|
+
fields: ["*", "first_name", "last_name", "phone", "has_account", "metadata"],
|
|
11
136
|
filters: { id },
|
|
12
137
|
});
|
|
13
|
-
//
|
|
138
|
+
// Resolve customer preferred language
|
|
139
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
140
|
+
customerMetadata: customers[0].metadata,
|
|
141
|
+
});
|
|
14
142
|
const notification = (0, send_notification_1.sendNotificationStep)([
|
|
15
143
|
{
|
|
16
144
|
to: customers[0].email,
|
|
17
145
|
channel: "email",
|
|
18
146
|
template: "customer.created",
|
|
19
|
-
data: {
|
|
147
|
+
data: {
|
|
148
|
+
customer: customers[0],
|
|
149
|
+
_settings: settings,
|
|
150
|
+
_locale: locale,
|
|
151
|
+
},
|
|
20
152
|
},
|
|
21
153
|
]);
|
|
154
|
+
// Sync new customer to Brevo contacts
|
|
155
|
+
(0, sync_brevo_contact_1.syncBrevoContactStep)({
|
|
156
|
+
email: customers[0].email,
|
|
157
|
+
firstName: customers[0].first_name,
|
|
158
|
+
lastName: customers[0].last_name,
|
|
159
|
+
phone: customers[0].phone,
|
|
160
|
+
});
|
|
161
|
+
// Track customer creation event
|
|
162
|
+
(0, track_brevo_event_1.trackBrevoEventStep)({
|
|
163
|
+
email: customers[0].email,
|
|
164
|
+
event: "customer_created",
|
|
165
|
+
eventdata: { customer_id: customers[0].id },
|
|
166
|
+
});
|
|
167
|
+
// Auto-create welcome promotion + send email (single step)
|
|
168
|
+
autoCreateAndSendPromotionStep({
|
|
169
|
+
customerId: customers[0].id,
|
|
170
|
+
email: customers[0].email,
|
|
171
|
+
firstName: customers[0].first_name,
|
|
172
|
+
lastName: customers[0].last_name,
|
|
173
|
+
phone: customers[0].phone,
|
|
174
|
+
hasAccount: customers[0].has_account,
|
|
175
|
+
locale,
|
|
176
|
+
});
|
|
22
177
|
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
23
178
|
});
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1jdXN0b21lci1jcmVhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zZW5kLWN1c3RvbWVyLWNyZWF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLDREQUErRDtBQUMvRCxpRUFBZ0U7QUFDaEUsbUVBQWlFO0FBQ2pFLGlFQUErRDtBQUMvRCwyREFBMEQ7QUFDMUQsOERBQWlFO0FBTWpFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUNqQyxvQ0FBb0MsRUFDcEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7UUFDMUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RCxPQUFPLElBQUksNEJBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0IsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLDhCQUE4QixHQUFHLElBQUEsMEJBQVUsRUFDL0MsZ0NBQWdDLEVBQ2hDLEtBQUssRUFBRSxLQVNOLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxRQUFhLENBQUE7SUFDakIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7UUFDMUUsUUFBUSxHQUFHLE1BQU0sb0JBQW9C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
|
|
@@ -4,20 +4,44 @@ exports.sendOrderCanceledWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
6
|
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
8
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
9
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-order-canceled", async (_, { container }) => {
|
|
10
|
+
try {
|
|
11
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
12
|
+
const settings = await brevoSettingsService.getSettings();
|
|
13
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return new workflows_sdk_1.StepResponse({});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
7
19
|
exports.sendOrderCanceledWorkflow = (0, workflows_sdk_1.createWorkflow)("send-order-canceled", ({ id }) => {
|
|
20
|
+
const settings = loadSettingsStep();
|
|
8
21
|
const { data: orders } = (0, core_flows_1.useQueryGraphStep)({
|
|
9
22
|
entity: "order",
|
|
10
|
-
fields: [
|
|
23
|
+
fields: [
|
|
24
|
+
"id", "email", "display_id",
|
|
25
|
+
"shipping_address.*", "billing_address.*",
|
|
26
|
+
"customer.metadata",
|
|
27
|
+
],
|
|
11
28
|
filters: { id },
|
|
12
29
|
});
|
|
30
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
31
|
+
customerMetadata: orders[0].customer?.metadata,
|
|
32
|
+
});
|
|
13
33
|
const notification = (0, send_notification_1.sendNotificationStep)([
|
|
14
34
|
{
|
|
15
35
|
to: orders[0].email,
|
|
16
36
|
channel: "email",
|
|
17
37
|
template: "order.canceled",
|
|
18
|
-
data: {
|
|
38
|
+
data: {
|
|
39
|
+
order: orders[0],
|
|
40
|
+
_settings: settings,
|
|
41
|
+
_locale: locale,
|
|
42
|
+
},
|
|
19
43
|
},
|
|
20
44
|
]);
|
|
21
45
|
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
22
46
|
});
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1vcmRlci1jYW5jZWxlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc2VuZC1vcmRlci1jYW5jZWxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMEM7QUFDMUMsNERBQStEO0FBQy9ELGlFQUFnRTtBQUNoRSwyREFBMEQ7QUFDMUQsOERBQWlFO0FBTWpFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUNqQyxrQ0FBa0MsRUFDbEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7UUFDMUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RCxPQUFPLElBQUksNEJBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0IsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBO0FBRVksUUFBQSx5QkFBeUIsR0FBRyxJQUFBLDhCQUFjLEVBQ3JELHFCQUFxQixFQUNyQixDQUFDLEVBQUUsRUFBRSxFQUFpQixFQUFFLEVBQUU7SUFDeEIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQTtJQUVuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDekMsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVk7WUFDM0Isb0JBQW9CLEVBQUUsbUJBQW1CO1lBQ3pDLG1CQUFtQjtTQUNwQjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFpQixFQUFDO1FBQy9CLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUTtLQUMvQyxDQUFDLENBQUE7SUFFRixNQUFNLFlBQVksR0FBRyxJQUFBLHdDQUFvQixFQUFDO1FBQ3hDO1lBQ0UsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsT0FBTyxFQUFFLE1BQU07YUFDaEI7U0FDRjtLQUNGLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUMzQyxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -4,25 +4,78 @@ exports.sendOrderConfirmationWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
6
|
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
+
const sync_brevo_contact_1 = require("./steps/sync-brevo-contact");
|
|
8
|
+
const track_brevo_event_1 = require("./steps/track-brevo-event");
|
|
9
|
+
const send_multi_channel_1 = require("./steps/send-multi-channel");
|
|
10
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
11
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
12
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-order-confirmation", async (_, { container }) => {
|
|
13
|
+
try {
|
|
14
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
15
|
+
const settings = await brevoSettingsService.getSettings();
|
|
16
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return new workflows_sdk_1.StepResponse({});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
7
22
|
exports.sendOrderConfirmationWorkflow = (0, workflows_sdk_1.createWorkflow)("send-order-confirmation", ({ id }) => {
|
|
23
|
+
const settings = loadSettingsStep();
|
|
8
24
|
const { data: orders } = (0, core_flows_1.useQueryGraphStep)({
|
|
9
25
|
entity: "order",
|
|
10
|
-
fields: [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
26
|
+
fields: [
|
|
27
|
+
"*", "id", "created_at", "email", "currency_code", "display_id",
|
|
28
|
+
"shipping_subtotal", "total", "items.*",
|
|
29
|
+
"billing_address.*", "shipping_address.*",
|
|
30
|
+
"payment_collections.*", "payment_collections.payments.*",
|
|
31
|
+
"fulfillments.*", "shipping_methods.*",
|
|
32
|
+
"customer.metadata",
|
|
33
|
+
],
|
|
34
|
+
filters: { id },
|
|
14
35
|
});
|
|
15
|
-
//
|
|
16
|
-
const
|
|
36
|
+
// Resolve customer preferred language
|
|
37
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
38
|
+
customerMetadata: orders[0].customer?.metadata,
|
|
39
|
+
});
|
|
40
|
+
// Send email notification
|
|
41
|
+
const notificationData = [
|
|
42
|
+
{
|
|
17
43
|
to: orders[0].email,
|
|
18
44
|
channel: "email",
|
|
19
45
|
template: "order.placed",
|
|
20
46
|
data: {
|
|
21
|
-
order: orders[0]
|
|
47
|
+
order: orders[0],
|
|
48
|
+
_settings: settings,
|
|
49
|
+
_locale: locale,
|
|
22
50
|
},
|
|
23
|
-
},
|
|
24
|
-
|
|
51
|
+
},
|
|
52
|
+
];
|
|
25
53
|
const notification = (0, send_notification_1.sendNotificationStep)(notificationData);
|
|
54
|
+
// Sync contact to Brevo
|
|
55
|
+
(0, sync_brevo_contact_1.syncBrevoContactStep)({
|
|
56
|
+
email: orders[0].email,
|
|
57
|
+
firstName: orders[0].shipping_address?.first_name,
|
|
58
|
+
lastName: orders[0].shipping_address?.last_name,
|
|
59
|
+
orderId: orders[0].id,
|
|
60
|
+
});
|
|
61
|
+
// Track order event
|
|
62
|
+
(0, track_brevo_event_1.trackBrevoEventStep)({
|
|
63
|
+
email: orders[0].email,
|
|
64
|
+
event: "order_placed",
|
|
65
|
+
eventdata: {
|
|
66
|
+
order_id: orders[0].id,
|
|
67
|
+
display_id: orders[0].display_id,
|
|
68
|
+
total: orders[0].total,
|
|
69
|
+
currency_code: orders[0].currency_code,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
// SMS / WhatsApp
|
|
73
|
+
(0, send_multi_channel_1.sendMultiChannelStep)({
|
|
74
|
+
email: orders[0].email,
|
|
75
|
+
phone: orders[0].shipping_address?.phone,
|
|
76
|
+
event: "order_placed",
|
|
77
|
+
displayId: orders[0].display_id,
|
|
78
|
+
});
|
|
26
79
|
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
27
80
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1vcmRlci1jb25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3NlbmQtb3JkZXItY29uZmlybWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyw0REFBK0Q7QUFDL0QsaUVBQWdFO0FBQ2hFLG1FQUFpRTtBQUNqRSxpRUFBK0Q7QUFDL0QsbUVBQWlFO0FBQ2pFLDJEQUEwRDtBQUUxRCw4REFBaUU7QUFNakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2xDLHNDQUFzQyxFQUN0QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMxQixJQUFJLENBQUM7UUFDSixNQUFNLG9CQUFvQixHQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQTtRQUMxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3pELE9BQU8sSUFBSSw0QkFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUixPQUFPLElBQUksNEJBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUM1QixDQUFDO0FBQ0YsQ0FBQyxDQUNELENBQUE7QUFFWSxRQUFBLDZCQUE2QixHQUFHLElBQUEsOEJBQWMsRUFDMUQseUJBQXlCLEVBQ3pCLENBQUMsRUFBRSxFQUFFLEVBQWlCLEVBQUUsRUFBRTtJQUN6QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsRUFBRSxDQUFBO0lBRW5DLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUMxQyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNQLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWTtZQUMvRCxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsU0FBUztZQUN2QyxtQkFBbUIsRUFBRSxvQkFBb0I7WUFDekMsdUJBQXVCLEVBQUUsZ0NBQWdDO1lBQ3pELGdCQUFnQixFQUFFLG9CQUFvQjtZQUN0QyxtQkFBbUI7U0FDbkI7UUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDZixDQUFDLENBQUE7SUFFRixzQ0FBc0M7SUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBaUIsRUFBQztRQUNoQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVE7S0FDOUMsQ0FBQyxDQUFBO0lBRUYsMEJBQTBCO0lBQzFCLE1BQU0sZ0JBQWdCLEdBQTRCO1FBQ2pEO1lBQ0MsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLElBQUksRUFBRTtnQkFDTCxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRSxNQUFNO2FBQ2Y7U0FDRDtLQUNELENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxJQUFBLHdDQUFvQixFQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFM0Qsd0JBQXdCO0lBQ3hCLElBQUEseUNBQW9CLEVBQUM7UUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQ3RCLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsVUFBVTtRQUNqRCxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLFNBQVM7UUFDL0MsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ3JCLENBQUMsQ0FBQTtJQUVGLG9CQUFvQjtJQUNwQixJQUFBLHVDQUFtQixFQUFDO1FBQ25CLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUN0QixLQUFLLEVBQUUsY0FBYztRQUNyQixTQUFTLEVBQUU7WUFDVixRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO1lBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUN0QixhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7U0FDdEM7S0FDRCxDQUFDLENBQUE7SUFFRixpQkFBaUI7SUFDakIsSUFBQSx5Q0FBb0IsRUFBQztRQUNwQixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDdEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3hDLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtLQUMvQixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDMUMsQ0FBQyxDQUNELENBQUEifQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendOrderDeliveredWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
8
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
9
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-delivered", async (_, { container }) => {
|
|
10
|
+
try {
|
|
11
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
12
|
+
const settings = await brevoSettingsService.getSettings();
|
|
13
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return new workflows_sdk_1.StepResponse({});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
exports.sendOrderDeliveredWorkflow = (0, workflows_sdk_1.createWorkflow)("send-order-delivered", ({ id }) => {
|
|
20
|
+
const settings = loadSettingsStep();
|
|
21
|
+
const { data: fulfillments } = (0, core_flows_1.useQueryGraphStep)({
|
|
22
|
+
entity: "fulfillment",
|
|
23
|
+
fields: [
|
|
24
|
+
"*",
|
|
25
|
+
"order.*",
|
|
26
|
+
"order.email",
|
|
27
|
+
"order.shipping_address.*",
|
|
28
|
+
"order.items.*",
|
|
29
|
+
"order.customer.metadata",
|
|
30
|
+
"labels.*",
|
|
31
|
+
],
|
|
32
|
+
filters: { id },
|
|
33
|
+
});
|
|
34
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
35
|
+
customerMetadata: fulfillments[0].order?.customer?.metadata,
|
|
36
|
+
});
|
|
37
|
+
const notificationData = [
|
|
38
|
+
{
|
|
39
|
+
to: fulfillments[0].order.email,
|
|
40
|
+
channel: "email",
|
|
41
|
+
template: "order.delivered",
|
|
42
|
+
data: {
|
|
43
|
+
fulfillment: fulfillments[0],
|
|
44
|
+
_settings: settings,
|
|
45
|
+
_locale: locale,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
const notification = (0, send_notification_1.sendNotificationStep)(notificationData);
|
|
50
|
+
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1vcmRlci1kZWxpdmVyZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3NlbmQtb3JkZXItZGVsaXZlcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE4RztBQUM5Ryw0REFBK0Q7QUFDL0QsaUVBQWdFO0FBQ2hFLDJEQUEwRDtBQUUxRCw4REFBaUU7QUFNakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDBCQUFVLEVBQy9CLDZCQUE2QixFQUM3QixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN2QixJQUFJLENBQUM7UUFDRCxNQUFNLG9CQUFvQixHQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQTtRQUMxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3pELE9BQU8sSUFBSSw0QkFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLElBQUksNEJBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvQixDQUFDO0FBQ0wsQ0FBQyxDQUNKLENBQUE7QUFFWSxRQUFBLDBCQUEwQixHQUFHLElBQUEsOEJBQWMsRUFDcEQsc0JBQXNCLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQWlCLEVBQUUsRUFBRTtJQUN0QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsRUFBRSxDQUFBO0lBRW5DLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUM3QyxNQUFNLEVBQUUsYUFBYTtRQUNyQixNQUFNLEVBQUU7WUFDSixHQUFHO1lBQ0gsU0FBUztZQUNULGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsZUFBZTtZQUNmLHlCQUF5QjtZQUN6QixVQUFVO1NBQ2I7UUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDbEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBaUIsRUFBQztRQUM3QixnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRO0tBQzlELENBQUMsQ0FBQTtJQUVGLE1BQU0sZ0JBQWdCLEdBQTRCO1FBQzlDO1lBQ0ksRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztZQUMvQixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLElBQUksRUFBRTtnQkFDRixXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRSxNQUFNO2FBQ2xCO1NBQ0o7S0FDSixDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSx3Q0FBb0IsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzNELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUM3QyxDQUFDLENBQ0osQ0FBQSJ9
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendReviewRequestWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const send_notification_1 = require("./steps/send-notification");
|
|
6
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
7
|
+
const loadSettingsForReviewRequest = (0, workflows_sdk_1.createStep)("load-settings-for-review-request", async (_, { container }) => {
|
|
8
|
+
try {
|
|
9
|
+
const svc = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
10
|
+
return new workflows_sdk_1.StepResponse(await svc.getSettings());
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return new workflows_sdk_1.StepResponse({});
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
exports.sendReviewRequestWorkflow = (0, workflows_sdk_1.createWorkflow)("send-review-request", (input) => {
|
|
17
|
+
const settings = loadSettingsForReviewRequest();
|
|
18
|
+
const notification = (0, send_notification_1.sendNotificationStep)([
|
|
19
|
+
{
|
|
20
|
+
to: input.email,
|
|
21
|
+
channel: "email",
|
|
22
|
+
template: "review.request",
|
|
23
|
+
data: {
|
|
24
|
+
order: {
|
|
25
|
+
id: input.orderId,
|
|
26
|
+
display_id: input.displayId,
|
|
27
|
+
shipping_address: { first_name: input.customerName },
|
|
28
|
+
items: input.items,
|
|
29
|
+
},
|
|
30
|
+
_settings: settings,
|
|
31
|
+
_locale: input.locale,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1yZXZpZXctcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc2VuZC1yZXZpZXctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMEM7QUFDMUMsaUVBQWdFO0FBQ2hFLDhEQUFpRTtBQUVqRSxNQUFNLDRCQUE0QixHQUFHLElBQUEsMEJBQVUsRUFDM0Msa0NBQWtDLEVBQ2xDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3ZCLElBQUksQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQTtRQUN6RCxPQUFPLElBQUksNEJBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLElBQUksNEJBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvQixDQUFDO0FBQ0wsQ0FBQyxDQUNKLENBQUE7QUFFWSxRQUFBLHlCQUF5QixHQUFHLElBQUEsOEJBQWMsRUFDbkQscUJBQXFCLEVBQ3JCLENBQUMsS0FPQSxFQUFFLEVBQUU7SUFDRCxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsRUFBRSxDQUFBO0lBRS9DLE1BQU0sWUFBWSxHQUFHLElBQUEsd0NBQW9CLEVBQUM7UUFDdEM7WUFDSSxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUU7b0JBQ0gsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUNqQixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzNCLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUU7b0JBQ3BELEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztpQkFDckI7Z0JBQ0QsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTTthQUN4QjtTQUNKO0tBQ0osQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLGdDQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQzdDLENBQUMsQ0FDSixDQUFBIn0=
|
|
@@ -4,38 +4,61 @@ exports.sendShipmentConfirmationWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
6
|
const send_notification_1 = require("./steps/send-notification");
|
|
7
|
+
const send_multi_channel_1 = require("./steps/send-multi-channel");
|
|
8
|
+
const resolve_locale_1 = require("./steps/resolve-locale");
|
|
9
|
+
const brevo_settings_1 = require("../modules/brevo-settings");
|
|
10
|
+
const loadSettingsStep = (0, workflows_sdk_1.createStep)("load-settings-for-shipment-confirmation", async (_, { container }) => {
|
|
11
|
+
try {
|
|
12
|
+
const brevoSettingsService = container.resolve(brevo_settings_1.BREVO_SETTINGS_MODULE);
|
|
13
|
+
const settings = await brevoSettingsService.getSettings();
|
|
14
|
+
return new workflows_sdk_1.StepResponse(settings);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return new workflows_sdk_1.StepResponse({});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
7
20
|
exports.sendShipmentConfirmationWorkflow = (0, workflows_sdk_1.createWorkflow)("send-shipment-confirmation", ({ id }) => {
|
|
8
|
-
|
|
21
|
+
const settings = loadSettingsStep();
|
|
9
22
|
const { data: fulfillments } = (0, core_flows_1.useQueryGraphStep)({
|
|
10
23
|
entity: "fulfillment",
|
|
11
24
|
fields: [
|
|
12
25
|
"*",
|
|
13
26
|
"id",
|
|
14
27
|
"tracking_numbers",
|
|
15
|
-
"order.*",
|
|
28
|
+
"order.*",
|
|
16
29
|
"order.email",
|
|
17
30
|
"order.shipping_address.*",
|
|
18
31
|
"order.billing_address.*",
|
|
32
|
+
"order.items.*",
|
|
33
|
+
"order.shipping_methods.*",
|
|
34
|
+
"order.customer.metadata",
|
|
19
35
|
"labels.*",
|
|
20
36
|
],
|
|
21
37
|
filters: { id },
|
|
22
38
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
39
|
+
const locale = (0, resolve_locale_1.resolveLocaleStep)({
|
|
40
|
+
customerMetadata: fulfillments[0].order?.customer?.metadata,
|
|
41
|
+
});
|
|
27
42
|
const notificationData = [
|
|
28
43
|
{
|
|
29
44
|
to: fulfillments[0].order.email,
|
|
30
45
|
channel: "email",
|
|
31
|
-
template: "shipment.confirmed",
|
|
46
|
+
template: "shipment.confirmed",
|
|
32
47
|
data: {
|
|
33
|
-
|
|
34
|
-
|
|
48
|
+
fulfillment: fulfillments[0],
|
|
49
|
+
_settings: settings,
|
|
50
|
+
_locale: locale,
|
|
35
51
|
},
|
|
36
52
|
},
|
|
37
53
|
];
|
|
38
54
|
const notification = (0, send_notification_1.sendNotificationStep)(notificationData);
|
|
55
|
+
// SMS / WhatsApp
|
|
56
|
+
(0, send_multi_channel_1.sendMultiChannelStep)({
|
|
57
|
+
email: fulfillments[0].order.email,
|
|
58
|
+
phone: fulfillments[0].order.shipping_address?.phone,
|
|
59
|
+
event: "shipment_created",
|
|
60
|
+
displayId: fulfillments[0].order.display_id,
|
|
61
|
+
});
|
|
39
62
|
return new workflows_sdk_1.WorkflowResponse(notification);
|
|
40
63
|
});
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1zaGlwbWVudC1jb25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3NlbmQtc2hpcG1lbnQtY29uZmlybWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyw0REFBK0Q7QUFDL0QsaUVBQWdFO0FBQ2hFLG1FQUFpRTtBQUNqRSwyREFBMEQ7QUFFMUQsOERBQWlFO0FBTWpFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUNqQyx5Q0FBeUMsRUFDekMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7UUFDMUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RCxPQUFPLElBQUksNEJBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0IsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBO0FBRVksUUFBQSxnQ0FBZ0MsR0FBRyxJQUFBLDhCQUFjLEVBQzVELDRCQUE0QixFQUM1QixDQUFDLEVBQUUsRUFBRSxFQUFpQixFQUFFLEVBQUU7SUFDeEIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQTtJQUVuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDL0MsTUFBTSxFQUFFLGFBQWE7UUFDckIsTUFBTSxFQUFFO1lBQ04sR0FBRztZQUNILElBQUk7WUFDSixrQkFBa0I7WUFDbEIsU0FBUztZQUNULGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLGVBQWU7WUFDZiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLFVBQVU7U0FDWDtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFpQixFQUFDO1FBQy9CLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVE7S0FDNUQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxnQkFBZ0IsR0FBNEI7UUFDaEQ7WUFDRSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQy9CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsT0FBTyxFQUFFLE1BQU07YUFDaEI7U0FDRjtLQUNGLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLHdDQUFvQixFQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFM0QsaUJBQWlCO0lBQ2pCLElBQUEseUNBQW9CLEVBQUM7UUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztRQUNsQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3BELEtBQUssRUFBRSxrQkFBa0I7UUFDekIsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVTtLQUM1QyxDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDM0MsQ0FBQyxDQUNGLENBQUEifQ==
|