@kb0912/notification-brevo 1.0.3 → 1.0.5
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.
|
@@ -49,6 +49,16 @@ class BrevoProviderService extends utils_1.AbstractNotificationProviderService {
|
|
|
49
49
|
this.apiInstance = new Brevo.TransactionalEmailsApi();
|
|
50
50
|
this.apiInstance.setApiKey(Brevo.TransactionalEmailsApiApiKeys.apiKey, this.options.apiKey);
|
|
51
51
|
}
|
|
52
|
+
humanPrice(amount, currencyCode) {
|
|
53
|
+
if (!amount)
|
|
54
|
+
return "0.00";
|
|
55
|
+
const formatter = new Intl.NumberFormat([], {
|
|
56
|
+
style: "currency",
|
|
57
|
+
currencyDisplay: "narrowSymbol",
|
|
58
|
+
currency: currencyCode, // "VND"
|
|
59
|
+
});
|
|
60
|
+
return formatter.format(amount);
|
|
61
|
+
}
|
|
52
62
|
async send(notification) {
|
|
53
63
|
const { to, template, data } = notification;
|
|
54
64
|
let templateId;
|
|
@@ -57,12 +67,6 @@ class BrevoProviderService extends utils_1.AbstractNotificationProviderService {
|
|
|
57
67
|
case "order.placed":
|
|
58
68
|
templateId = parseInt(this.options.orderPlacedTemplateId);
|
|
59
69
|
const order = data.order;
|
|
60
|
-
// Tạo formatter dựa trên currency_code
|
|
61
|
-
const formatter = new Intl.NumberFormat([], {
|
|
62
|
-
style: "currency",
|
|
63
|
-
currencyDisplay: "narrowSymbol",
|
|
64
|
-
currency: order.currency_code.toUpperCase(), // "VND"
|
|
65
|
-
});
|
|
66
70
|
const paymentMethodMap = {
|
|
67
71
|
"pp_bank-transfer_bank-transfer": "Bank Transfer",
|
|
68
72
|
"pp_stripe_stripe": "Credit Card",
|
|
@@ -80,19 +84,19 @@ class BrevoProviderService extends utils_1.AbstractNotificationProviderService {
|
|
|
80
84
|
currency_code: order?.currency_code,
|
|
81
85
|
date_placed: new Date(order?.created_at).toLocaleDateString(),
|
|
82
86
|
display_id: order?.display_id,
|
|
83
|
-
total:
|
|
87
|
+
total: this.humanPrice(order?.total, order?.currency_code),
|
|
84
88
|
customer_name: `${order?.shipping_address?.first_name} ${order?.shipping_address?.last_name}`, // Full name
|
|
85
89
|
items: order?.items.map((item) => ({
|
|
86
90
|
...item,
|
|
87
|
-
unit_price:
|
|
88
|
-
total:
|
|
91
|
+
unit_price: this.humanPrice(item.unit_price, order?.currency_code),
|
|
92
|
+
total: this.humanPrice(item.total, order?.currency_code),
|
|
89
93
|
thumbnail: item.thumbnail,
|
|
90
94
|
title: item.product_title,
|
|
91
95
|
description: item.product_description
|
|
92
96
|
})),
|
|
93
97
|
shipping_address: order?.shipping_address,
|
|
94
98
|
billing_address: order?.billing_address,
|
|
95
|
-
shipping_subtotal:
|
|
99
|
+
shipping_subtotal: this.humanPrice(order?.shipping_subtotal, order?.currency_code),
|
|
96
100
|
shipping_methods: order?.shipping_methods,
|
|
97
101
|
payment_collections: order?.payment_collections[0]?.payments.map(payment => ({
|
|
98
102
|
...payment,
|
|
@@ -118,18 +122,20 @@ class BrevoProviderService extends utils_1.AbstractNotificationProviderService {
|
|
|
118
122
|
break;
|
|
119
123
|
case "cart.abandoned":
|
|
120
124
|
templateId = parseInt(this.options.abandonedCartTemplateId);
|
|
125
|
+
const cart = data.cart;
|
|
121
126
|
params = {
|
|
122
|
-
cart_id:
|
|
123
|
-
created_at:
|
|
124
|
-
name:
|
|
125
|
-
phone:
|
|
126
|
-
|
|
127
|
+
cart_id: cart?.id,
|
|
128
|
+
created_at: cart?.created_at,
|
|
129
|
+
name: cart?.name,
|
|
130
|
+
phone: cart?.phone,
|
|
131
|
+
currency_code: cart?.currency_code,
|
|
132
|
+
item: cart?.items.map((item) => ({
|
|
127
133
|
...item,
|
|
128
|
-
unit_price:
|
|
129
|
-
total:
|
|
134
|
+
unit_price: this.humanPrice(item.unit_price, cart?.currency_code),
|
|
135
|
+
total: this.humanPrice(item.total, cart?.currency_code),
|
|
130
136
|
thumbnail: item.thumbnail,
|
|
131
137
|
title: item.product_title,
|
|
132
|
-
description: item.product_description
|
|
138
|
+
description: item.product_description,
|
|
133
139
|
})),
|
|
134
140
|
};
|
|
135
141
|
break;
|
|
@@ -165,4 +171,4 @@ class BrevoProviderService extends utils_1.AbstractNotificationProviderService {
|
|
|
165
171
|
}
|
|
166
172
|
BrevoProviderService.identifier = "brevo";
|
|
167
173
|
exports.default = BrevoProviderService;
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL25vdGlmaWNhdGlvbnMtYnJldm8vc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFHbUM7QUFNbkMsdURBQXlDO0FBS3pDLE1BQU0sb0JBQXFCLFNBQVEsMkNBQW1DO0lBT3BFLFlBQVksRUFBRSxNQUFNLEVBQXNCLEVBQUUsT0FBNEI7UUFDdEUsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw4QkFBOEIsQ0FDL0IsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixpQ0FBaUMsQ0FDbEMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ3hCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWTtRQUM3QixJQUFJLENBQUMsTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBRWhCLE1BQU0s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
|
|
@@ -14,6 +14,7 @@ exports.sendAbandonedCartWorkflow = (0, workflows_sdk_1.createWorkflow)("send-ab
|
|
|
14
14
|
"customer.first_name",
|
|
15
15
|
"customer.last_name",
|
|
16
16
|
"customer.phone",
|
|
17
|
+
"currency_code",
|
|
17
18
|
"items.*"
|
|
18
19
|
],
|
|
19
20
|
filters: { id: cartId },
|
|
@@ -44,4 +45,4 @@ exports.sendAbandonedCartWorkflow = (0, workflows_sdk_1.createWorkflow)("send-ab
|
|
|
44
45
|
const notificationStep = (0, send_notification_1.sendNotificationStep)(notificationData);
|
|
45
46
|
return new workflows_sdk_1.WorkflowResponse(notificationStep);
|
|
46
47
|
});
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1hYmFuZG9uZWQtY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc2VuZC1hYmFuZG9uZWQtY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBK0c7QUFDL0csNERBQWdFO0FBQ2hFLGlFQUFpRTtBQU9wRCxRQUFBLHlCQUF5QixHQUFHLElBQUEsOEJBQWMsRUFDckQscUJBQXFCLEVBQ3JCLENBQUMsRUFBRSxNQUFNLEVBQWlCLEVBQUUsRUFBRTtJQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ2pDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLE9BQU87WUFDUCxZQUFZO1lBQ1oscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLFNBQVM7U0FDVjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSx1QkFBdUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3hDLHFDQUFxQyxFQUNyQyxLQUFLLEVBQUUsS0FBc0IsRUFBRSxFQUFFO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDekIsNkNBQTZDO1FBRTdDLE1BQU0sZ0JBQWdCLEdBQTRCO1lBQ2hEO2dCQUNFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDbEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUU7d0JBQ0osRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNmLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTt3QkFDL0IsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO3dCQUN4RixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksd0JBQXdCO3dCQUMzRCxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUM7cUJBQzVEO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBRUYsOEVBQThFO1FBQzlFLE9BQU8sSUFBSSw0QkFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUNGLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSx3Q0FBb0IsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhFLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FDRixDQUFDIn0=
|