@pvh-afl/core 1.2.42 → 1.2.44
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/dist/notifications/order-email.mapper.d.ts +24 -1
- package/dist/notifications/order-email.mapper.d.ts.map +1 -1
- package/dist/notifications/order-email.mapper.js +40 -7
- package/dist/notifications/order-email.mapper.js.map +1 -1
- package/dist/notifications/order-email.service.d.ts +4 -1
- package/dist/notifications/order-email.service.d.ts.map +1 -1
- package/dist/notifications/order-email.service.js +4 -2
- package/dist/notifications/order-email.service.js.map +1 -1
- package/dist/notifications/order-notification.types.d.ts +1 -1
- package/dist/notifications/order-notification.types.d.ts.map +1 -1
- package/dist/notifications/order-notification.types.js +2 -0
- package/dist/notifications/order-notification.types.js.map +1 -1
- package/dist/notifications/order-whatsapp.mapper.d.ts +9 -2
- package/dist/notifications/order-whatsapp.mapper.d.ts.map +1 -1
- package/dist/notifications/order-whatsapp.mapper.js +10 -4
- package/dist/notifications/order-whatsapp.mapper.js.map +1 -1
- package/dist/notifications/order-whatsapp.service.d.ts +6 -1
- package/dist/notifications/order-whatsapp.service.d.ts.map +1 -1
- package/dist/notifications/order-whatsapp.service.js +7 -2
- package/dist/notifications/order-whatsapp.service.js.map +1 -1
- package/dist/notifications/order.source.d.ts +5 -0
- package/dist/notifications/order.source.d.ts.map +1 -1
- package/dist/notifications/order.source.js +1 -0
- package/dist/notifications/order.source.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,6 +20,12 @@ export declare const prettyGateway: (name: string, labels?: Readonly<Record<stri
|
|
|
20
20
|
* is the fallback. Returns '' when neither is available and the caller decides
|
|
21
21
|
* what to show.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* Events where money is going back to the customer, so "Payment Type" names the
|
|
25
|
+
* refund destination rather than how they originally paid. An approved return
|
|
26
|
+
* says "your refund is on its way", which is the same promise as a refund.
|
|
27
|
+
* A declined return refunds nothing, so it keeps the original method.
|
|
28
|
+
*/
|
|
23
29
|
export declare const REFUND_EVENTS: ReadonlySet<OrderEvent>;
|
|
24
30
|
export declare const resolvePaymentMethod: (order: OrderSnapshot, paymentTags?: readonly string[],
|
|
25
31
|
/**
|
|
@@ -30,6 +36,21 @@ export declare const resolvePaymentMethod: (order: OrderSnapshot, paymentTags?:
|
|
|
30
36
|
codRefundLabel?: string,
|
|
31
37
|
/** Customer-facing renames for raw gateway names. */
|
|
32
38
|
gatewayLabels?: Readonly<Record<string, string>>) => string;
|
|
39
|
+
/**
|
|
40
|
+
* The lines a return or refund actually covers, keyed by Shopify line item id
|
|
41
|
+
* with the affected quantity. Absent for order-lifecycle events, which concern
|
|
42
|
+
* the whole order.
|
|
43
|
+
*/
|
|
44
|
+
export type AffectedLines = Readonly<Record<string, number>>;
|
|
45
|
+
/**
|
|
46
|
+
* Narrow an order to the lines a return or refund covers.
|
|
47
|
+
*
|
|
48
|
+
* `amount` on a snapshot item is the line total for the ordered quantity, so a
|
|
49
|
+
* partial return is priced per unit and multiplied back up — returning one of
|
|
50
|
+
* three must not quote the price of three. Ids absent from the order are
|
|
51
|
+
* ignored rather than guessed at.
|
|
52
|
+
*/
|
|
53
|
+
export declare const selectAffectedItems: (items: OrderSnapshot["items"], affected: AffectedLines) => OrderSnapshot["items"];
|
|
33
54
|
export declare const renderItemsHtml: (items: OrderSnapshot["items"], currency: string, branding: OrderEmailBranding) => string;
|
|
34
55
|
export declare const renderAddressHtml: (lines: string[]) => string;
|
|
35
56
|
/**
|
|
@@ -40,5 +61,7 @@ export declare const renderAddressHtml: (lines: string[]) => string;
|
|
|
40
61
|
*/
|
|
41
62
|
export declare const buildAttributes: (event: OrderEvent, order: OrderSnapshot, branding: OrderEmailBranding, trackingUrl?: string,
|
|
42
63
|
/** Amount of this refund, from the webhook. Absent for non-refund events. */
|
|
43
|
-
refundAmount?: number
|
|
64
|
+
refundAmount?: number,
|
|
65
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
66
|
+
affected?: AffectedLines) => Record<string, string>;
|
|
44
67
|
//# sourceMappingURL=order-email.mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-email.mapper.d.ts","sourceRoot":"","sources":["../../src/notifications/order-email.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AA+B5E,2DAA2D;AAC3D,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG9D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAKf,CAAC;AAE7B;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,SAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,KAC5C,MAQF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"order-email.mapper.d.ts","sourceRoot":"","sources":["../../src/notifications/order-email.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AA+B5E,2DAA2D;AAC3D,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG9D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAKf,CAAC;AAE7B;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,SAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,KAC5C,MAQF,CAAC;AAEF;;;;;;;GAOG;AACH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,UAAU,CAKhD,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,aAAa,EACpB,cAAa,SAAS,MAAM,EAAO;AACnC;;;;GAIG;AACH,iBAAiB,MAAM;AACvB,qDAAqD;AACrD,gBAAe,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,KACnD,MAaF,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,aAAa,KACtB,aAAa,CAAC,OAAO,CAOlB,CAAC;AA6CP,eAAO,MAAM,eAAe,GAC1B,OAAO,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,MAAM,EAChB,UAAU,kBAAkB,KAC3B,MAKE,CAAC;AAEN,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,KAAG,MACd,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,UAAU,EACjB,OAAO,aAAa,EACpB,UAAU,kBAAkB,EAC5B,cAAc,MAAM;AACpB,6EAA6E;AAC7E,eAAe,MAAM;AACrB,qEAAqE;AACrE,WAAW,aAAa,KACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAuDvB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildAttributes = exports.renderAddressHtml = exports.renderItemsHtml = exports.resolvePaymentMethod = exports.REFUND_EVENTS = exports.prettyGateway = exports.escapeHtml = exports.formatMoney = void 0;
|
|
3
|
+
exports.buildAttributes = exports.renderAddressHtml = exports.renderItemsHtml = exports.selectAffectedItems = exports.resolvePaymentMethod = exports.REFUND_EVENTS = exports.prettyGateway = exports.escapeHtml = exports.formatMoney = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Turns an order into the flat `[%KEY%]` values Netcore substitutes.
|
|
6
6
|
*
|
|
@@ -66,9 +66,17 @@ exports.prettyGateway = prettyGateway;
|
|
|
66
66
|
* is the fallback. Returns '' when neither is available and the caller decides
|
|
67
67
|
* what to show.
|
|
68
68
|
*/
|
|
69
|
+
/**
|
|
70
|
+
* Events where money is going back to the customer, so "Payment Type" names the
|
|
71
|
+
* refund destination rather than how they originally paid. An approved return
|
|
72
|
+
* says "your refund is on its way", which is the same promise as a refund.
|
|
73
|
+
* A declined return refunds nothing, so it keeps the original method.
|
|
74
|
+
*/
|
|
69
75
|
exports.REFUND_EVENTS = new Set([
|
|
70
76
|
'refund_initiated',
|
|
71
77
|
'refund_complete',
|
|
78
|
+
'return_approved',
|
|
79
|
+
'return_complete',
|
|
72
80
|
]);
|
|
73
81
|
const resolvePaymentMethod = (order, paymentTags = [],
|
|
74
82
|
/**
|
|
@@ -92,6 +100,22 @@ gatewayLabels = {}) => {
|
|
|
92
100
|
return (order.tags.find((tag) => known.includes(tag.trim().toLowerCase())) ?? '');
|
|
93
101
|
};
|
|
94
102
|
exports.resolvePaymentMethod = resolvePaymentMethod;
|
|
103
|
+
/**
|
|
104
|
+
* Narrow an order to the lines a return or refund covers.
|
|
105
|
+
*
|
|
106
|
+
* `amount` on a snapshot item is the line total for the ordered quantity, so a
|
|
107
|
+
* partial return is priced per unit and multiplied back up — returning one of
|
|
108
|
+
* three must not quote the price of three. Ids absent from the order are
|
|
109
|
+
* ignored rather than guessed at.
|
|
110
|
+
*/
|
|
111
|
+
const selectAffectedItems = (items, affected) => items
|
|
112
|
+
.filter((item) => affected[item.id] !== undefined)
|
|
113
|
+
.map((item) => {
|
|
114
|
+
const quantity = affected[item.id];
|
|
115
|
+
const unit = item.quantity > 0 ? item.amount / item.quantity : item.amount;
|
|
116
|
+
return { ...item, quantity, amount: unit * quantity };
|
|
117
|
+
});
|
|
118
|
+
exports.selectAffectedItems = selectAffectedItems;
|
|
95
119
|
const specRow = (label, value, { fontFamily, textColor }) => {
|
|
96
120
|
const cell = `font-family:${fontFamily}; font-size:15px; line-height:26px; color:${textColor};`;
|
|
97
121
|
return `<tr>
|
|
@@ -137,23 +161,32 @@ exports.renderAddressHtml = renderAddressHtml;
|
|
|
137
161
|
*/
|
|
138
162
|
const buildAttributes = (event, order, branding, trackingUrl,
|
|
139
163
|
/** Amount of this refund, from the webhook. Absent for non-refund events. */
|
|
140
|
-
refundAmount
|
|
164
|
+
refundAmount,
|
|
165
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
166
|
+
affected) => {
|
|
141
167
|
const money = (amount) => (0, exports.formatMoney)(amount, order.currency);
|
|
168
|
+
// A return or refund concerns part of the order, so the block is rebuilt
|
|
169
|
+
// around those lines: their own subtotal, no order-level shipping or
|
|
170
|
+
// discount. Leaving the order totals beside a narrowed list would have the
|
|
171
|
+
// message contradict itself.
|
|
172
|
+
const items = affected ? (0, exports.selectAffectedItems)(order.items, affected) : order.items;
|
|
173
|
+
const partial = affected !== undefined;
|
|
174
|
+
const itemsTotal = items.reduce((sum, item) => sum + item.amount, 0);
|
|
142
175
|
const attributes = {
|
|
143
176
|
LOGO_URL: branding.logoUrl,
|
|
144
177
|
CUSTOMER_NAME: order.customerName || 'there',
|
|
145
178
|
ORDER_NUMBER: order.orderNumber,
|
|
146
|
-
ITEMS_HTML: (0, exports.renderItemsHtml)(
|
|
179
|
+
ITEMS_HTML: (0, exports.renderItemsHtml)(items, order.currency, branding),
|
|
147
180
|
// Whole row, or nothing — Netcore has no conditionals, so an empty string
|
|
148
181
|
// is the only way to drop the line on orders without a discount. Carries no
|
|
149
182
|
// styling: the totals table sets font and colour, so this inherits them.
|
|
150
|
-
DISCOUNT_ROW: order.totalDiscount > 0
|
|
183
|
+
DISCOUNT_ROW: !partial && order.totalDiscount > 0
|
|
151
184
|
? `<tr><td align="left">${(0, exports.escapeHtml)(branding.discountLabel)}</td>` +
|
|
152
185
|
`<td align="right" style="font-weight:bold;">- ${money(order.totalDiscount)}</td></tr>`
|
|
153
186
|
: '',
|
|
154
|
-
GST_AMOUNT: money(order.totalTax),
|
|
155
|
-
SHIPPING_AMOUNT: money(order.totalShipping),
|
|
156
|
-
TOTAL_AMOUNT: money(order.totalPrice),
|
|
187
|
+
GST_AMOUNT: money(partial ? 0 : order.totalTax),
|
|
188
|
+
SHIPPING_AMOUNT: money(partial ? 0 : order.totalShipping),
|
|
189
|
+
TOTAL_AMOUNT: money(partial ? itemsTotal : order.totalPrice),
|
|
157
190
|
// This refund only, not the order's cumulative total — a partial refund
|
|
158
191
|
// must not read as the whole order coming back.
|
|
159
192
|
REFUND_AMOUNT: refundAmount === undefined ? '' : money(refundAmount),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-email.mapper.js","sourceRoot":"","sources":["../../src/notifications/order-email.mapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"order-email.mapper.js","sourceRoot":"","sources":["../../src/notifications/order-email.mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ConfigService } from '../config/config.service';
|
|
2
2
|
import { NetcoreEmailService } from '../integrations/engagement/netcore-email.service';
|
|
3
|
+
import { AffectedLines } from './order-email.mapper';
|
|
3
4
|
import { OrderSource } from './order.source';
|
|
4
5
|
import { OrderEmailResult, OrderEvent } from './order-notification.types';
|
|
5
6
|
/**
|
|
@@ -16,7 +17,9 @@ export declare class OrderEmailService {
|
|
|
16
17
|
private readonly netcore;
|
|
17
18
|
private readonly source;
|
|
18
19
|
constructor(configService: ConfigService, netcore: NetcoreEmailService, source: OrderSource);
|
|
19
|
-
send(brand: string, event: OrderEvent, orderId: string | number, trackingUrl?: string, refundAmount?: number
|
|
20
|
+
send(brand: string, event: OrderEvent, orderId: string | number, trackingUrl?: string, refundAmount?: number,
|
|
21
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
22
|
+
affected?: AffectedLines): Promise<OrderEmailResult>;
|
|
20
23
|
/**
|
|
21
24
|
* Presentation values come from the brand config only — no defaults live here,
|
|
22
25
|
* because a fallback would be one brand's colours quietly applied to another.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-email.service.d.ts","sourceRoot":"","sources":["../../src/notifications/order-email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"order-email.service.d.ts","sourceRoot":"","sources":["../../src/notifications/order-email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAEL,gBAAgB,EAChB,UAAU,EAGX,MAAM,4BAA4B,CAAC;AAsBpC;;;;;;;;GAQG;AACH,qBACa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,WAAW;IAGhC,IAAI,CACR,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAuE5B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAmCrB,iFAAiF;IACjF,OAAO,CAAC,iBAAiB;CA8B1B"}
|
|
@@ -26,7 +26,9 @@ let OrderEmailService = class OrderEmailService {
|
|
|
26
26
|
this.netcore = netcore;
|
|
27
27
|
this.source = source;
|
|
28
28
|
}
|
|
29
|
-
async send(brand, event, orderId, trackingUrl, refundAmount
|
|
29
|
+
async send(brand, event, orderId, trackingUrl, refundAmount,
|
|
30
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
31
|
+
affected) {
|
|
30
32
|
const options = this.configureProvider(brand);
|
|
31
33
|
if (!options)
|
|
32
34
|
return 'skipped';
|
|
@@ -61,7 +63,7 @@ let OrderEmailService = class OrderEmailService {
|
|
|
61
63
|
personalizations: [
|
|
62
64
|
{
|
|
63
65
|
to: [{ email: order.email, name: order.customerName || undefined }],
|
|
64
|
-
attributes: (0, order_email_mapper_1.buildAttributes)(event, order, branding, trackingUrl, refundAmount),
|
|
66
|
+
attributes: (0, order_email_mapper_1.buildAttributes)(event, order, branding, trackingUrl, refundAmount, affected),
|
|
65
67
|
},
|
|
66
68
|
],
|
|
67
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-email.service.js","sourceRoot":"","sources":["../../src/notifications/order-email.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,6CAA0C;AAC1C,6DAAyD;AACzD,4FAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"order-email.service.js","sourceRoot":"","sources":["../../src/notifications/order-email.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The event list is channel-neutral: email, WhatsApp and SMS all react to the
|
|
5
5
|
* same order lifecycle. Only the per-channel send settings differ.
|
|
6
6
|
*/
|
|
7
|
-
export declare const ORDER_EVENTS: readonly ["order_confirmed", "order_packed", "order_shipped", "order_delivered", "order_cancelled", "order_cancelled_by_seller", "return_initiated", "return_complete", "refund_initiated", "refund_complete"];
|
|
7
|
+
export declare const ORDER_EVENTS: readonly ["order_confirmed", "order_packed", "order_shipped", "order_delivered", "order_cancelled", "order_cancelled_by_seller", "return_initiated", "return_complete", "return_approved", "return_rejected", "refund_initiated", "refund_complete"];
|
|
8
8
|
export type OrderEvent = (typeof ORDER_EVENTS)[number];
|
|
9
9
|
/**
|
|
10
10
|
* Per-event email settings, read from the brand's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-notification.types.d.ts","sourceRoot":"","sources":["../../src/notifications/order-notification.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"order-notification.types.d.ts","sourceRoot":"","sources":["../../src/notifications/order-notification.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,sPAaf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-notification.types.js","sourceRoot":"","sources":["../../src/notifications/order-notification.types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,YAAY,GAAG;IAC1B,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,2BAA2B;IAC3B,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"order-notification.types.js","sourceRoot":"","sources":["../../src/notifications/order-notification.types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,YAAY,GAAG;IAC1B,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,2BAA2B;IAC3B,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CACT,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { OrderSnapshot } from './order.source';
|
|
2
|
+
import { AffectedLines } from './order-email.mapper';
|
|
2
3
|
import { OrderEvent } from './order-notification.types';
|
|
3
4
|
/**
|
|
4
5
|
* Values a WhatsApp template variable can be filled from. The brand config
|
|
5
6
|
* lists these in template order, so `{{1}}`, `{{2}}` … are declared as data
|
|
6
7
|
* rather than hardcoded per event.
|
|
7
8
|
*/
|
|
8
|
-
export type WhatsAppField = 'customerName' | 'orderNumber' | 'products' | 'paymentMethod' | 'trackingUrl' | 'amount' | 'refundTimeframe' | 'expectedDelivery' | 'supportPhone' | 'supportEmail';
|
|
9
|
+
export type WhatsAppField = 'customerName' | 'orderNumber' | 'products' | 'paymentMethod' | 'trackingUrl' | 'amount' | 'refundTimeframe' | 'expectedDelivery' | 'declineReason' | 'supportPhone' | 'supportEmail';
|
|
9
10
|
export interface OrderWhatsAppBranding {
|
|
10
11
|
/**
|
|
11
12
|
* Order tags that name a payment method, e.g. `COD`. Used only when Shopify
|
|
@@ -15,6 +16,12 @@ export interface OrderWhatsAppBranding {
|
|
|
15
16
|
paymentTags?: string[];
|
|
16
17
|
/** Refund wording for a COD order, e.g. "Bank Transfer". */
|
|
17
18
|
codRefundLabel: string;
|
|
19
|
+
/**
|
|
20
|
+
* Customer-facing wording for Shopify's three decline reasons, keyed
|
|
21
|
+
* lower-case (`return_period_ended`, `final_sale`, `other`). The raw enum
|
|
22
|
+
* would read as machine output in a message.
|
|
23
|
+
*/
|
|
24
|
+
declineReasons: Readonly<Record<string, string>>;
|
|
18
25
|
/** Customer-facing renames for raw Shopify gateway names, keyed lower-case. */
|
|
19
26
|
gatewayLabels: Readonly<Record<string, string>>;
|
|
20
27
|
supportPhone: string;
|
|
@@ -43,5 +50,5 @@ export declare const formatEdd: (note: string | null) => string;
|
|
|
43
50
|
* variable order. Any value that resolves empty takes its configured fallback,
|
|
44
51
|
* because WhatsApp rejects the whole send on a blank variable.
|
|
45
52
|
*/
|
|
46
|
-
export declare const buildWhatsAppAttributes: (fields: readonly WhatsAppField[], event: OrderEvent, order: OrderSnapshot, branding: OrderWhatsAppBranding, trackingUrl?: string, refundAmount?: number) => string[];
|
|
53
|
+
export declare const buildWhatsAppAttributes: (fields: readonly WhatsAppField[], event: OrderEvent, order: OrderSnapshot, branding: OrderWhatsAppBranding, trackingUrl?: string, refundAmount?: number, declineReason?: string, affected?: AffectedLines) => string[];
|
|
47
54
|
//# sourceMappingURL=order-whatsapp.mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-whatsapp.mapper.d.ts","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"order-whatsapp.mapper.d.ts","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,aAAa,EAKd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,aAAa,GACb,UAAU,GACV,eAAe,GACf,aAAa,GACb,QAAQ,GACR,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,+EAA+E;IAC/E,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAKD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,aAAa,CAAC,OAAO,CAAC,KAAG,MAuB9D,CAAC;AAmBF,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,GAAG,IAAI,KAAG,MAO/C,CAAC;AAuDF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,SAAS,aAAa,EAAE,EAChC,OAAO,UAAU,EACjB,OAAO,aAAa,EACpB,UAAU,qBAAqB,EAC/B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,gBAAgB,MAAM,EACtB,WAAW,aAAa,KACvB,MAAM,EAeL,CAAC"}
|
|
@@ -62,14 +62,15 @@ const formatEdd = (note) => {
|
|
|
62
62
|
return `${Number(day)} ${monthName} ${year}`;
|
|
63
63
|
};
|
|
64
64
|
exports.formatEdd = formatEdd;
|
|
65
|
-
const resolve = (field, event, order, branding, trackingUrl, refundAmount) => {
|
|
65
|
+
const resolve = (field, event, order, branding, trackingUrl, refundAmount, declineReason, affected) => {
|
|
66
66
|
switch (field) {
|
|
67
67
|
case 'customerName':
|
|
68
68
|
return order.customerName;
|
|
69
69
|
case 'orderNumber':
|
|
70
70
|
return order.orderNumber;
|
|
71
71
|
case 'products':
|
|
72
|
-
return
|
|
72
|
+
// A return or refund lists only the lines it covers.
|
|
73
|
+
return (0, exports.renderProducts)(affected ? (0, order_email_mapper_1.selectAffectedItems)(order.items, affected) : order.items);
|
|
73
74
|
case 'paymentMethod':
|
|
74
75
|
return (0, order_email_mapper_1.resolvePaymentMethod)(order, branding.paymentTags, order_email_mapper_1.REFUND_EVENTS.has(event) ? branding.codRefundLabel : undefined, branding.gatewayLabels);
|
|
75
76
|
case 'trackingUrl':
|
|
@@ -84,6 +85,11 @@ const resolve = (field, event, order, branding, trackingUrl, refundAmount) => {
|
|
|
84
85
|
return branding.refundTimeframe;
|
|
85
86
|
case 'expectedDelivery':
|
|
86
87
|
return (0, exports.formatEdd)(order.note);
|
|
88
|
+
case 'declineReason':
|
|
89
|
+
// Shopify sends an enum (`final_sale`); unmapped values resolve empty so
|
|
90
|
+
// the caller's fallback applies rather than machine wording reaching a
|
|
91
|
+
// customer.
|
|
92
|
+
return branding.declineReasons[(declineReason ?? '').toLowerCase()] ?? '';
|
|
87
93
|
case 'supportPhone':
|
|
88
94
|
return branding.supportPhone;
|
|
89
95
|
case 'supportEmail':
|
|
@@ -99,8 +105,8 @@ const resolve = (field, event, order, branding, trackingUrl, refundAmount) => {
|
|
|
99
105
|
* variable order. Any value that resolves empty takes its configured fallback,
|
|
100
106
|
* because WhatsApp rejects the whole send on a blank variable.
|
|
101
107
|
*/
|
|
102
|
-
const buildWhatsAppAttributes = (fields, event, order, branding, trackingUrl, refundAmount) => fields.map((field) => {
|
|
103
|
-
const value = flatten(resolve(field, event, order, branding, trackingUrl, refundAmount));
|
|
108
|
+
const buildWhatsAppAttributes = (fields, event, order, branding, trackingUrl, refundAmount, declineReason, affected) => fields.map((field) => {
|
|
109
|
+
const value = flatten(resolve(field, event, order, branding, trackingUrl, refundAmount, declineReason, affected));
|
|
104
110
|
return value || flatten(branding.fallbacks[field] ?? '');
|
|
105
111
|
});
|
|
106
112
|
exports.buildWhatsAppAttributes = buildWhatsAppAttributes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-whatsapp.mapper.js","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.mapper.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"order-whatsapp.mapper.js","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.mapper.ts"],"names":[],"mappings":";;;AACA,6DAM8B;AAiD9B,0EAA0E;AAC1E,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAAC,KAA6B,EAAU,EAAE;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,2EAA2E;QAC3E,2EAA2E;QAC3E,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,IAAI,mBAAmB;QAAE,OAAO,MAAM,CAAC;IAExD,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC;QAC7D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,mBAAmB;YAAE,MAAM;QAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,SAAS,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC,CAAC;AAvBW,QAAA,cAAc,kBAuBzB;AAEF,gFAAgF;AAChF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAE7E;;;GAGG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,MAAM,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,CAAC;AAElF,MAAM,SAAS,GAAG,CAAC,IAAmB,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB;AAEF,MAAM,OAAO,GAAG,CACd,KAAoB,EACpB,KAAiB,EACjB,KAAoB,EACpB,QAA+B,EAC/B,WAAoB,EACpB,YAAqB,EACrB,aAAsB,EACtB,QAAwB,EAChB,EAAE;IACV,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,YAAY,CAAC;QAC5B,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,KAAK,UAAU;YACb,qDAAqD;YACrD,OAAO,IAAA,sBAAc,EACnB,QAAQ,CAAC,CAAC,CAAC,IAAA,wCAAmB,EAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CACpE,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO,IAAA,yCAAoB,EACzB,KAAK,EACL,QAAQ,CAAC,WAAW,EACpB,kCAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC9D,QAAQ,CAAC,aAAa,CACvB,CAAC;QACJ,KAAK,aAAa;YAChB,2EAA2E;YAC3E,+BAA+B;YAC/B,OAAO,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,YAAY,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAA,gCAAW,EAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,kBAAkB;YACrB,OAAO,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,eAAe;YAClB,yEAAyE;YACzE,uEAAuE;YACvE,YAAY;YACZ,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5E,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,YAAY,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,YAAY,CAAC;QAC/B;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,uBAAuB,GAAG,CACrC,MAAgC,EAChC,KAAiB,EACjB,KAAoB,EACpB,QAA+B,EAC/B,WAAoB,EACpB,YAAqB,EACrB,aAAsB,EACtB,QAAwB,EACd,EAAE,CACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,MAAM,KAAK,GAAG,OAAO,CACnB,OAAO,CACP,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,CACT,CACA,CAAC;IACF,OAAO,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAxBQ,QAAA,uBAAuB,2BAwB/B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ConfigService } from '../config/config.service';
|
|
2
2
|
import { NetcoreWhatsAppService } from '../integrations/engagement/netcore-whatsapp.service';
|
|
3
|
+
import { AffectedLines } from './order-email.mapper';
|
|
3
4
|
import { OrderSource } from './order.source';
|
|
4
5
|
import { OrderEmailResult, OrderEvent } from './order-notification.types';
|
|
5
6
|
/**
|
|
@@ -20,7 +21,11 @@ export declare class OrderWhatsAppService {
|
|
|
20
21
|
private readonly whatsapp;
|
|
21
22
|
private readonly source;
|
|
22
23
|
constructor(configService: ConfigService, whatsapp: NetcoreWhatsAppService, source: OrderSource);
|
|
23
|
-
send(brand: string, event: OrderEvent, orderId: string | number, trackingUrl?: string, refundAmount?: number
|
|
24
|
+
send(brand: string, event: OrderEvent, orderId: string | number, trackingUrl?: string, refundAmount?: number,
|
|
25
|
+
/** Shopify's decline enum, for the return-rejected message. */
|
|
26
|
+
declineReason?: string,
|
|
27
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
28
|
+
affected?: AffectedLines): Promise<OrderEmailResult>;
|
|
24
29
|
private buildBranding;
|
|
25
30
|
private configureProvider;
|
|
26
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-whatsapp.service.d.ts","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"order-whatsapp.service.d.ts","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AA0B1E;;;;;;;;;;;;GAYG;AACH,qBACa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,WAAW;IAGhC,IAAI,CACR,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM;IACrB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAkE5B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -30,7 +30,11 @@ let OrderWhatsAppService = class OrderWhatsAppService {
|
|
|
30
30
|
this.whatsapp = whatsapp;
|
|
31
31
|
this.source = source;
|
|
32
32
|
}
|
|
33
|
-
async send(brand, event, orderId, trackingUrl, refundAmount
|
|
33
|
+
async send(brand, event, orderId, trackingUrl, refundAmount,
|
|
34
|
+
/** Shopify's decline enum, for the return-rejected message. */
|
|
35
|
+
declineReason,
|
|
36
|
+
/** Lines a return or refund covers. Absent means the whole order. */
|
|
37
|
+
affected) {
|
|
34
38
|
const options = this.configureProvider(brand);
|
|
35
39
|
if (!options)
|
|
36
40
|
return 'skipped';
|
|
@@ -54,7 +58,7 @@ let OrderWhatsAppService = class OrderWhatsAppService {
|
|
|
54
58
|
return 'skipped';
|
|
55
59
|
}
|
|
56
60
|
const branding = this.buildBranding(brand, options);
|
|
57
|
-
const attributes = (0, order_whatsapp_mapper_1.buildWhatsAppAttributes)(eventConfig.attributes ?? [], event, order, branding, trackingUrl, refundAmount);
|
|
61
|
+
const attributes = (0, order_whatsapp_mapper_1.buildWhatsAppAttributes)(eventConfig.attributes ?? [], event, order, branding, trackingUrl, refundAmount, declineReason, affected);
|
|
58
62
|
const result = await this.whatsapp.sendTemplate({
|
|
59
63
|
recipient: order.phone,
|
|
60
64
|
templateName: eventConfig.templateName,
|
|
@@ -97,6 +101,7 @@ let OrderWhatsAppService = class OrderWhatsAppService {
|
|
|
97
101
|
paymentTags: options.paymentTags ?? [],
|
|
98
102
|
codRefundLabel: options.codRefundLabel ?? '',
|
|
99
103
|
gatewayLabels: options.gatewayLabels ?? {},
|
|
104
|
+
declineReasons: options.declineReasons ?? {},
|
|
100
105
|
fallbacks: options.fallbacks ?? {},
|
|
101
106
|
};
|
|
102
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-whatsapp.service.js","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,6CAA0C;AAC1C,6DAAyD;AACzD,kGAA6F;
|
|
1
|
+
{"version":3,"file":"order-whatsapp.service.js","sourceRoot":"","sources":["../../src/notifications/order-whatsapp.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,11 @@ export interface OrderSnapshot {
|
|
|
35
35
|
/** Shopify's order-status page — the fallback when a parcel has no tracking link. */
|
|
36
36
|
orderStatusUrl: string | null;
|
|
37
37
|
items: Array<{
|
|
38
|
+
/**
|
|
39
|
+
* Shopify line item id, digits only. Return and refund webhooks name the
|
|
40
|
+
* affected lines by this id, so the message can list just those.
|
|
41
|
+
*/
|
|
42
|
+
id: string;
|
|
38
43
|
title: string;
|
|
39
44
|
quantity: number;
|
|
40
45
|
amount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.source.d.ts","sourceRoot":"","sources":["../../src/notifications/order.source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"order.source.d.ts","sourceRoot":"","sources":["../../src/notifications/order.source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAqErF,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qFAAqF;IACrF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;QACX;;;WAGG;QACH,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;CACJ;AA0ED,qBACa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;IAErE;;;;OAIG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA4ClF,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,UAAU;CA6CnB"}
|
|
@@ -150,6 +150,7 @@ let OrderSource = class OrderSource {
|
|
|
150
150
|
trackingUrl,
|
|
151
151
|
orderStatusUrl: order.statusPageUrl ?? null,
|
|
152
152
|
items: (order.lineItems?.edges ?? []).map(({ node }) => ({
|
|
153
|
+
id: (node.id ?? '').split('/').pop() ?? '',
|
|
153
154
|
title: node.title ?? '',
|
|
154
155
|
quantity: node.quantity ?? 1,
|
|
155
156
|
amount: toNumber(node.originalTotalSet?.shopMoney?.amount),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.source.js","sourceRoot":"","sources":["../../src/notifications/order.source.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,6CAA0C;AAC1C,0FAAqF;
|
|
1
|
+
{"version":3,"file":"order.source.js","sourceRoot":"","sources":["../../src/notifications/order.source.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,6CAA0C;AAC1C,0FAAqF;AAuHrF,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCnB,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAU,EAAE;IAC1C,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAA6B,EAAY,EAAE;IAChE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;SACpE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,GAAG,CAAC,IAAuB,EAAE,GAAG,KAAe,EAAiB,EAAE;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAC9C,CAAC;IACF,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACtC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAG3C,IAAM,WAAW,GAAjB,MAAM,WAAW;IACO;IAA7B,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAEzE;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,OAAwB;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC9C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACjB,CAAC,CAAC,uBAAuB,OAAO,EAAE,CAAC;QAErC,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAEzD,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpC,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC5B,eAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBAChD,KAAK;oBACL,OAAO,EAAE,GAAG;oBACZ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;iBACnC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,eAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;oBAC5C,KAAK;oBACL,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,OAAO,GAAG,CAAC;iBACtB,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAED,eAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;gBAC/C,KAAK;gBACL,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,OAAO,GAAG,CAAC;gBACpB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,UAAU,CAAC,KAAiB;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAExD,MAAM,WAAW,GACf,KAAK,CAAC,YAAY;YAChB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;aACjB,IAAI,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAExD,OAAO;YACL,8DAA8D;YAC9D,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACjD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;YACnD,KAAK,EACH,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,QAAQ,EAAE,KAAK;gBACrB,KAAK,CAAC,eAAe,EAAE,KAAK;gBAC5B,IAAI;YACN,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,IAAI,KAAK;YAC/D,YAAY,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7D,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;YAC5D,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;YACxD,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC;YACnE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,qBAAqB,EAAE,SAAS,EAAE,MAAM,CAAC;YACvE,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;YACnD,eAAe,EAAE,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;YACrD,aAAa,EAAE,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3D,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YACvD,WAAW;YACX,cAAc,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;YAC3C,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvD,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC;gBAC1D,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;gBACvC,uEAAuE;gBACvE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;aAC3E,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF,CAAA;AArGY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;6CAEuC,2CAAmB;GAD1D,WAAW,CAqGvB"}
|