order-management 0.0.101 → 0.0.103
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 +1840 -1830
- package/.medusa/server/src/admin/index.mjs +1841 -1831
- package/.medusa/server/src/api/store/carts/[id]/pickup/route.js +113 -0
- package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +12 -1
- package/.medusa/server/src/api/store/guest-orders/[id]/swaps/route.js +14 -2
- package/.medusa/server/src/api/store/pickup-locations/route.js +20 -0
- package/.medusa/server/src/api/store/returns/route.js +33 -10
- package/.medusa/server/src/api/store/swaps/route.js +17 -2
- package/.medusa/server/src/config.js +4 -1
- package/.medusa/server/src/helpers/pickup-locations.js +155 -0
- package/.medusa/server/src/helpers/returns.js +88 -1
- package/.medusa/server/src/subscribers/order-status-change.js +37 -2
- package/.medusa/server/src/utils/order-fulfillment-metadata.js +68 -0
- package/README.md +10 -1
- package/package.json +1 -1
|
@@ -51,6 +51,9 @@ function normalizeOrderManagementOptions(input) {
|
|
|
51
51
|
capture_payment_on_delivered: input.capture_payment_on_delivered ?? true,
|
|
52
52
|
returnValidInDays,
|
|
53
53
|
exchangeValidInDays,
|
|
54
|
+
allowPayAtStore: input.allowPayAtStore ?? true,
|
|
55
|
+
requireReturnStoreLocation: input.requireReturnStoreLocation ?? true,
|
|
56
|
+
capture_payment_on_pickup: input.capture_payment_on_pickup ?? true,
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
function resolveOrderManagementOptions(configModule) {
|
|
@@ -69,4 +72,4 @@ function resolveOrderManagementOptions(configModule) {
|
|
|
69
72
|
}
|
|
70
73
|
throw new Error("order-management: Plugin not found in configuration. Please add the plugin to medusa-config.ts");
|
|
71
74
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUEwQ0gsMEVBdURDO0FBRUQsc0VBd0JDO0FBekhELHFEQUFvRDtBQU1wRCx1RkFBdUY7QUFDMUUsUUFBQSxhQUFhLEdBQUc7SUFDM0IsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWE7Q0FDN0MsQ0FBQTtBQWtCVixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCLElBQUksSUFBSTtRQUN4RSxpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUk7UUFDOUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixJQUFJLElBQUk7UUFDcEUseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixJQUFJLElBQUk7S0FDbkUsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FDM0MsWUFBZ0M7SUFFaEMsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7SUFFM0MsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLElBQUEsZ0JBQVEsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUMzQix3RUFBd0U7Z0JBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkZBQTZGLENBQzlGLENBQUE7WUFDSCxDQUFDO1lBQ0QsU0FBUTtRQUNWLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLGdHQUFnRyxDQUNqRyxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listPickupLocations = listPickupLocations;
|
|
4
|
+
exports.getPickupLocation = getPickupLocation;
|
|
5
|
+
exports.listReturnLocations = listReturnLocations;
|
|
6
|
+
exports.assertValidReturnLocation = assertValidReturnLocation;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const order_fulfillment_metadata_1 = require("../utils/order-fulfillment-metadata");
|
|
9
|
+
function str(value) {
|
|
10
|
+
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
11
|
+
}
|
|
12
|
+
function rows(value) {
|
|
13
|
+
return Array.isArray(value)
|
|
14
|
+
? value.filter((v) => Boolean(v && typeof v === "object"))
|
|
15
|
+
: [];
|
|
16
|
+
}
|
|
17
|
+
function optionCode(option) {
|
|
18
|
+
const type = option.type;
|
|
19
|
+
if (type && typeof type === "object" && !Array.isArray(type)) {
|
|
20
|
+
return str(type.code);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
function isCustomerPickupOption(option) {
|
|
25
|
+
if (optionCode(option) === order_fulfillment_metadata_1.CUSTOMER_PICKUP_OPTION_CODE)
|
|
26
|
+
return true;
|
|
27
|
+
const data = option.data;
|
|
28
|
+
if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
29
|
+
return data.customer_pickup === true;
|
|
30
|
+
}
|
|
31
|
+
return str(option.name) === "Store pickup";
|
|
32
|
+
}
|
|
33
|
+
function isCustomerVisible(location) {
|
|
34
|
+
const meta = location.metadata;
|
|
35
|
+
if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
|
|
36
|
+
// No flag → treat as visible when a customer pickup option exists
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const m = meta;
|
|
40
|
+
if (m.customer_visible === false || m.customer_visible === "false")
|
|
41
|
+
return false;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
function findCustomerPickupOptionId(location) {
|
|
45
|
+
for (const set of rows(location.fulfillment_sets)) {
|
|
46
|
+
if (set.type && set.type !== "pickup")
|
|
47
|
+
continue;
|
|
48
|
+
for (const zone of rows(set.service_zones)) {
|
|
49
|
+
for (const option of rows(zone.shipping_options)) {
|
|
50
|
+
if (isCustomerPickupOption(option) && str(option.id)) {
|
|
51
|
+
return str(option.id);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
function toDto(location) {
|
|
59
|
+
const id = str(location.id);
|
|
60
|
+
if (!id)
|
|
61
|
+
return null;
|
|
62
|
+
if (!isCustomerVisible(location))
|
|
63
|
+
return null;
|
|
64
|
+
const shippingOptionId = findCustomerPickupOptionId(location);
|
|
65
|
+
if (!shippingOptionId)
|
|
66
|
+
return null;
|
|
67
|
+
const meta = location.metadata && typeof location.metadata === "object" && !Array.isArray(location.metadata)
|
|
68
|
+
? location.metadata
|
|
69
|
+
: {};
|
|
70
|
+
const addressRow = location.address && typeof location.address === "object" && !Array.isArray(location.address)
|
|
71
|
+
? location.address
|
|
72
|
+
: null;
|
|
73
|
+
return {
|
|
74
|
+
id,
|
|
75
|
+
name: str(location.name) ?? id,
|
|
76
|
+
address: addressRow
|
|
77
|
+
? {
|
|
78
|
+
address_1: str(addressRow.address_1),
|
|
79
|
+
address_2: str(addressRow.address_2),
|
|
80
|
+
city: str(addressRow.city),
|
|
81
|
+
province: str(addressRow.province),
|
|
82
|
+
postal_code: str(addressRow.postal_code),
|
|
83
|
+
country_code: str(addressRow.country_code),
|
|
84
|
+
phone: str(addressRow.phone),
|
|
85
|
+
}
|
|
86
|
+
: null,
|
|
87
|
+
metadata: meta,
|
|
88
|
+
shipping_option_id: shippingOptionId,
|
|
89
|
+
hours: str(meta.hours) ?? str(meta.opening_hours),
|
|
90
|
+
phone: str(meta.phone) ?? (addressRow ? str(addressRow.phone) : null),
|
|
91
|
+
public_name: str(meta.public_name) ?? str(location.name),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const LOCATION_FIELDS = [
|
|
95
|
+
"id",
|
|
96
|
+
"name",
|
|
97
|
+
"metadata",
|
|
98
|
+
"address.address_1",
|
|
99
|
+
"address.address_2",
|
|
100
|
+
"address.city",
|
|
101
|
+
"address.province",
|
|
102
|
+
"address.postal_code",
|
|
103
|
+
"address.country_code",
|
|
104
|
+
"address.phone",
|
|
105
|
+
"fulfillment_sets.id",
|
|
106
|
+
"fulfillment_sets.type",
|
|
107
|
+
"fulfillment_sets.service_zones.id",
|
|
108
|
+
"fulfillment_sets.service_zones.shipping_options.id",
|
|
109
|
+
"fulfillment_sets.service_zones.shipping_options.name",
|
|
110
|
+
"fulfillment_sets.service_zones.shipping_options.type.code",
|
|
111
|
+
"fulfillment_sets.service_zones.shipping_options.data",
|
|
112
|
+
];
|
|
113
|
+
async function listPickupLocations(container) {
|
|
114
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
115
|
+
const { data } = await query.graph({
|
|
116
|
+
entity: "stock_location",
|
|
117
|
+
fields: LOCATION_FIELDS,
|
|
118
|
+
});
|
|
119
|
+
return rows(data)
|
|
120
|
+
.map(toDto)
|
|
121
|
+
.filter((loc) => Boolean(loc))
|
|
122
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
123
|
+
}
|
|
124
|
+
async function getPickupLocation(container, locationId) {
|
|
125
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
126
|
+
const { data } = await query.graph({
|
|
127
|
+
entity: "stock_location",
|
|
128
|
+
fields: LOCATION_FIELDS,
|
|
129
|
+
filters: { id: locationId },
|
|
130
|
+
});
|
|
131
|
+
const [location] = rows(data);
|
|
132
|
+
return location ? toDto(location) : null;
|
|
133
|
+
}
|
|
134
|
+
/** Locations that may receive customer returns/exchanges (same visibility rules as pickup). */
|
|
135
|
+
async function listReturnLocations(container) {
|
|
136
|
+
return listPickupLocations(container);
|
|
137
|
+
}
|
|
138
|
+
async function assertValidReturnLocation(container, locationId) {
|
|
139
|
+
const id = typeof locationId === "string" ? locationId.trim() : "";
|
|
140
|
+
if (!id || id === "default_location") {
|
|
141
|
+
return {
|
|
142
|
+
ok: false,
|
|
143
|
+
message: "A valid store location_id is required for return or exchange",
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const location = await getPickupLocation(container, id);
|
|
147
|
+
if (!location) {
|
|
148
|
+
return {
|
|
149
|
+
ok: false,
|
|
150
|
+
message: `Store location "${id}" is not available for return or exchange`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return { ok: true, location };
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja3VwLWxvY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3BpY2t1cC1sb2NhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErSUEsa0RBWUM7QUFFRCw4Q0FZQztBQUdELGtEQUlDO0FBRUQsOERBbUJDO0FBck1ELHFEQUFxRTtBQUVyRSxvRkFBaUY7QUErQmpGLFNBQVMsR0FBRyxDQUFDLEtBQWM7SUFDekIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUN4RSxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsS0FBYztJQUMxQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDUixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsTUFBVztJQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFBO0lBQ3hCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBRSxJQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsTUFBVztJQUN6QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyx3REFBMkI7UUFBRSxP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
|
|
@@ -6,6 +6,8 @@ exports.loadReturnsViaQuery = loadReturnsViaQuery;
|
|
|
6
6
|
exports.loadReturnByIdViaQuery = loadReturnByIdViaQuery;
|
|
7
7
|
exports.attachReturnShippingMethods = attachReturnShippingMethods;
|
|
8
8
|
exports.checkDeliveryReturnWindow = checkDeliveryReturnWindow;
|
|
9
|
+
exports.isUsableStockLocationId = isUsableStockLocationId;
|
|
10
|
+
exports.resolveReturnWorkflowShipping = resolveReturnWorkflowShipping;
|
|
9
11
|
exports.getOrderReturnData = getOrderReturnData;
|
|
10
12
|
exports.validateReturnWindow = validateReturnWindow;
|
|
11
13
|
exports.calculateRefundAmount = calculateRefundAmount;
|
|
@@ -194,6 +196,91 @@ async function checkDeliveryReturnWindow(orderId, windowDays = DEFAULT_RETURN_EX
|
|
|
194
196
|
}
|
|
195
197
|
return { allowed: true };
|
|
196
198
|
}
|
|
199
|
+
const PLACEHOLDER_STOCK_LOCATION = "default_location";
|
|
200
|
+
/** Storefront sends this when the order payload has no fulfillment location. */
|
|
201
|
+
function isUsableStockLocationId(id) {
|
|
202
|
+
if (!id)
|
|
203
|
+
return false;
|
|
204
|
+
const trimmed = id.trim();
|
|
205
|
+
return trimmed.length > 0 && trimmed !== PLACEHOLDER_STOCK_LOCATION;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Medusa's create-return workflow reads `calculated_price.calculated_amount` when
|
|
209
|
+
* `return_shipping.price` is omitted, and throws a plain TypeError if that object
|
|
210
|
+
* is missing. It also rejects a placeholder location such as "default_location".
|
|
211
|
+
* Either throw escapes this plugin and Medusa responds with
|
|
212
|
+
* "An unknown error occurred."
|
|
213
|
+
*/
|
|
214
|
+
async function resolveReturnWorkflowShipping(orderId, shipping, explicitLocation, container) {
|
|
215
|
+
let locationId = isUsableStockLocationId(explicitLocation)
|
|
216
|
+
? explicitLocation.trim()
|
|
217
|
+
: isUsableStockLocationId(shipping?.location_id)
|
|
218
|
+
? shipping.location_id.trim()
|
|
219
|
+
: undefined;
|
|
220
|
+
if (!locationId) {
|
|
221
|
+
try {
|
|
222
|
+
const orderData = await getOrderReturnData(orderId, container);
|
|
223
|
+
if (isUsableStockLocationId(orderData.location_id)) {
|
|
224
|
+
locationId = orderData.location_id;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
locationId = undefined;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (!shipping?.option_id) {
|
|
232
|
+
return { location_id: locationId };
|
|
233
|
+
}
|
|
234
|
+
let price = typeof shipping.price === "number" && Number.isFinite(shipping.price) && shipping.price >= 0
|
|
235
|
+
? shipping.price
|
|
236
|
+
: undefined;
|
|
237
|
+
if (price == null || !locationId) {
|
|
238
|
+
try {
|
|
239
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
240
|
+
const { data } = await query.graph({
|
|
241
|
+
entity: "shipping_option",
|
|
242
|
+
fields: [
|
|
243
|
+
"id",
|
|
244
|
+
"prices.amount",
|
|
245
|
+
"prices.currency_code",
|
|
246
|
+
"service_zone.fulfillment_set.location.id",
|
|
247
|
+
],
|
|
248
|
+
filters: { id: shipping.option_id },
|
|
249
|
+
});
|
|
250
|
+
const row = graphRows(data)[0];
|
|
251
|
+
const zone = isRecord(row?.service_zone) ? row.service_zone : undefined;
|
|
252
|
+
const fulfillmentSet = isRecord(zone?.fulfillment_set) ? zone.fulfillment_set : undefined;
|
|
253
|
+
const location = isRecord(fulfillmentSet?.location) ? fulfillmentSet.location : undefined;
|
|
254
|
+
const optionLocation = typeof location?.id === "string" ? location.id : undefined;
|
|
255
|
+
if (!locationId && isUsableStockLocationId(optionLocation)) {
|
|
256
|
+
locationId = optionLocation;
|
|
257
|
+
}
|
|
258
|
+
if (price == null) {
|
|
259
|
+
const prices = Array.isArray(row?.prices) ? row.prices.filter(isRecord) : [];
|
|
260
|
+
const inr = prices.find((p) => String(p.currency_code ?? "").toLowerCase() === "inr");
|
|
261
|
+
const chosen = inr ?? prices[0];
|
|
262
|
+
const amount = chosen?.amount;
|
|
263
|
+
if (typeof amount === "number" && Number.isFinite(amount)) {
|
|
264
|
+
price = amount;
|
|
265
|
+
}
|
|
266
|
+
else if (typeof amount === "string" && amount.trim() !== "" && !Number.isNaN(Number(amount))) {
|
|
267
|
+
price = Number(amount);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// Workflow can still run; a missing price is logged by the route catch.
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
location_id: locationId,
|
|
277
|
+
return_shipping: {
|
|
278
|
+
option_id: shipping.option_id,
|
|
279
|
+
...(locationId ? { location_id: locationId } : {}),
|
|
280
|
+
...(price != null ? { price } : {}),
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
}
|
|
197
284
|
/**
|
|
198
285
|
* Get order data needed for return creation
|
|
199
286
|
*/
|
|
@@ -377,4 +464,4 @@ function normalizeOrderModuleReturnForDashboard(r) {
|
|
|
377
464
|
items,
|
|
378
465
|
};
|
|
379
466
|
}
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3JldHVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0VBLGdFQVVDO0FBTUQsa0RBOEJDO0FBRUQsd0RBY0M7QUFNRCxrRUFxQ0M7QUFFRCw4REE4REM7QUFLRCxnREE0Q0M7QUFLRCxvREFTQztBQUtELHNEQXFCQztBQUtELGdEQUtDO0FBS0QsMENBRUM7QUFRRCw0RUE2QkM7QUFtQkQsc0VBSUM7QUFzQ0QsNEVBbUNDO0FBRUQsd0ZBc0NDO0FBOWdCRCxxREFBOEU7QUFFOUUsTUFBTSxtQ0FBbUMsR0FBRyxDQUFDLENBQUE7QUF3QjdDLFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBYTtJQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNwRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDOUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxJQUFJO0lBQ0osVUFBVTtJQUNWLFFBQVE7SUFDUixZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixhQUFhO0lBQ2IsY0FBYztJQUNkLGFBQWE7SUFDYixlQUFlO0lBQ2YsWUFBWTtJQUNaLGFBQWE7SUFDYixVQUFVO0lBQ1YsYUFBYTtJQUNiLFNBQVM7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
|
|
467
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3JldHVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0VBLGdFQVVDO0FBTUQsa0RBOEJDO0FBRUQsd0RBY0M7QUFNRCxrRUFxQ0M7QUFFRCw4REE4REM7QUFLRCwwREFJQztBQWVELHNFQWtGQztBQUtELGdEQTRDQztBQUtELG9EQVNDO0FBS0Qsc0RBcUJDO0FBS0QsZ0RBS0M7QUFLRCwwQ0FFQztBQVFELDRFQTZCQztBQW1CRCxzRUFJQztBQXNDRCw0RUFtQ0M7QUFFRCx3RkFzQ0M7QUF4bkJELHFEQUE4RTtBQUU5RSxNQUFNLG1DQUFtQyxHQUFHLENBQUMsQ0FBQTtBQXdCN0MsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQzdFLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFhO0lBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLHdCQUF3QixHQUFHO0lBQ3RDLElBQUk7SUFDSixVQUFVO0lBQ1YsUUFBUTtJQUNSLFlBQVk7SUFDWixZQUFZO0lBQ1osWUFBWTtJQUNaLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLFVB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
|
|
@@ -14,15 +14,39 @@ async function resolveOrderFields(orderId, container) {
|
|
|
14
14
|
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
15
15
|
const { data: orders = [] } = await query.graph({
|
|
16
16
|
entity: "order",
|
|
17
|
-
fields: ["id", "status", "display_id"],
|
|
17
|
+
fields: ["id", "status", "display_id", "metadata"],
|
|
18
18
|
filters: { id: orderId },
|
|
19
19
|
});
|
|
20
20
|
const order = Array.isArray(orders) ? orders[0] : orders;
|
|
21
|
+
const metadata = order?.metadata && typeof order.metadata === "object" && !Array.isArray(order.metadata)
|
|
22
|
+
? order.metadata
|
|
23
|
+
: {};
|
|
21
24
|
return {
|
|
22
25
|
status: order?.status,
|
|
23
26
|
display_id: (0, template_1.normalizeOrderDisplayId)(order?.display_id),
|
|
27
|
+
pickup_status: typeof metadata.pickup_status === "string" ? metadata.pickup_status : undefined,
|
|
28
|
+
payment_mode: typeof metadata.payment_mode === "string" ? metadata.payment_mode : undefined,
|
|
29
|
+
fulfillment_method: typeof metadata.fulfillment_method === "string"
|
|
30
|
+
? metadata.fulfillment_method
|
|
31
|
+
: undefined,
|
|
24
32
|
};
|
|
25
33
|
}
|
|
34
|
+
/** Map pickup metadata to notification statusConfig keys. */
|
|
35
|
+
function pickupNotificationStatuses(fields) {
|
|
36
|
+
const keys = [];
|
|
37
|
+
if (fields.fulfillment_method === "pickup" && fields.pickup_status === "ready") {
|
|
38
|
+
keys.push("pickup_ready");
|
|
39
|
+
}
|
|
40
|
+
if (fields.fulfillment_method === "pickup" && fields.pickup_status === "collected") {
|
|
41
|
+
keys.push("pickup_collected");
|
|
42
|
+
}
|
|
43
|
+
if (fields.fulfillment_method === "pickup" &&
|
|
44
|
+
fields.payment_mode === "pay_at_store" &&
|
|
45
|
+
fields.pickup_status === "collected") {
|
|
46
|
+
keys.push("pay_at_store_captured");
|
|
47
|
+
}
|
|
48
|
+
return keys;
|
|
49
|
+
}
|
|
26
50
|
/**
|
|
27
51
|
* Subscriber handler for order status change events
|
|
28
52
|
* Sends configured notifications based on the new order status
|
|
@@ -74,6 +98,17 @@ async function orderStatusChangeHandler({ event, container, }) {
|
|
|
74
98
|
return;
|
|
75
99
|
}
|
|
76
100
|
await (0, notification_handler_1.handleOrderStatusNotifications)(orderId, status, container);
|
|
101
|
+
// Extra keys for store-pickup / pay-at-store (configure under notifications.statusConfig)
|
|
102
|
+
if (event.name === "order.updated" || event.name === "order.placed") {
|
|
103
|
+
for (const pickupKey of pickupNotificationStatuses(resolved)) {
|
|
104
|
+
await (0, notification_handler_1.handleOrderStatusNotifications)(orderId, pickupKey, container);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (event.name === "order.placed" &&
|
|
108
|
+
resolved.fulfillment_method === "pickup" &&
|
|
109
|
+
resolved.payment_mode === "pay_at_store") {
|
|
110
|
+
await (0, notification_handler_1.handleOrderStatusNotifications)(orderId, "pickup_pay_at_store_placed", container);
|
|
111
|
+
}
|
|
77
112
|
}
|
|
78
113
|
catch (error) {
|
|
79
114
|
console.error("[Order Status Change Subscriber] Error processing order status change:", error);
|
|
@@ -95,4 +130,4 @@ exports.config = {
|
|
|
95
130
|
"delivery.created", // When order is delivered
|
|
96
131
|
],
|
|
97
132
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItc3RhdHVzLWNoYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9vcmRlci1zdGF0dXMtY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBGQSwyQ0FpRUM7QUF6SkQscURBQXFFO0FBQ3JFLHdFQUE4RTtBQUM5RSx1REFBNkQ7QUFDN0QsZ0RBQTJEO0FBUTNEOzs7R0FHRztBQUNILEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsT0FBZSxFQUNmLFNBQXdCO0lBUXhCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQVEsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzlDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDO1FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7S0FDekIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDeEQsTUFBTSxRQUFRLEdBQ1osS0FBSyxFQUFFLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3JGLENBQUMsQ0FBRSxLQUFLLENBQUMsUUFBb0M7UUFDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNSLE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQTRCO1FBQzNDLFVBQVUsRUFB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
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cart / order metadata contract for delivery vs store pickup and payment mode.
|
|
4
|
+
* Used by storefront, order-management, and POS pickup queues.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.CUSTOMER_PICKUP_OPTION_CODE = exports.PICKUP_STATUS_KEY = exports.PAYMENT_MODE_KEY = exports.PICKUP_LOCATION_NAME_KEY = exports.PICKUP_LOCATION_ID_KEY = exports.FULFILLMENT_METHOD_KEY = void 0;
|
|
8
|
+
exports.isFulfillmentMethod = isFulfillmentMethod;
|
|
9
|
+
exports.isPaymentMode = isPaymentMode;
|
|
10
|
+
exports.readFulfillmentMetadata = readFulfillmentMetadata;
|
|
11
|
+
exports.buildPickupCartMetadata = buildPickupCartMetadata;
|
|
12
|
+
exports.buildDeliveryCartMetadata = buildDeliveryCartMetadata;
|
|
13
|
+
exports.FULFILLMENT_METHOD_KEY = "fulfillment_method";
|
|
14
|
+
exports.PICKUP_LOCATION_ID_KEY = "pickup_location_id";
|
|
15
|
+
exports.PICKUP_LOCATION_NAME_KEY = "pickup_location_name";
|
|
16
|
+
exports.PAYMENT_MODE_KEY = "payment_mode";
|
|
17
|
+
exports.PICKUP_STATUS_KEY = "pickup_status";
|
|
18
|
+
exports.CUSTOMER_PICKUP_OPTION_CODE = "customer-pickup";
|
|
19
|
+
function isFulfillmentMethod(value) {
|
|
20
|
+
return value === "delivery" || value === "pickup";
|
|
21
|
+
}
|
|
22
|
+
function isPaymentMode(value) {
|
|
23
|
+
return value === "online" || value === "pay_at_store" || value === "cod";
|
|
24
|
+
}
|
|
25
|
+
function readFulfillmentMetadata(metadata) {
|
|
26
|
+
if (!metadata || typeof metadata !== "object")
|
|
27
|
+
return {};
|
|
28
|
+
const out = {};
|
|
29
|
+
if (isFulfillmentMethod(metadata[exports.FULFILLMENT_METHOD_KEY])) {
|
|
30
|
+
out[exports.FULFILLMENT_METHOD_KEY] = metadata[exports.FULFILLMENT_METHOD_KEY];
|
|
31
|
+
}
|
|
32
|
+
const loc = metadata[exports.PICKUP_LOCATION_ID_KEY];
|
|
33
|
+
if (typeof loc === "string" && loc.trim()) {
|
|
34
|
+
out[exports.PICKUP_LOCATION_ID_KEY] = loc.trim();
|
|
35
|
+
}
|
|
36
|
+
if (isPaymentMode(metadata[exports.PAYMENT_MODE_KEY])) {
|
|
37
|
+
out[exports.PAYMENT_MODE_KEY] = metadata[exports.PAYMENT_MODE_KEY];
|
|
38
|
+
}
|
|
39
|
+
const status = metadata[exports.PICKUP_STATUS_KEY];
|
|
40
|
+
if (status === "pending" || status === "ready" || status === "collected") {
|
|
41
|
+
out[exports.PICKUP_STATUS_KEY] = status;
|
|
42
|
+
}
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
function buildPickupCartMetadata(input) {
|
|
46
|
+
return {
|
|
47
|
+
...(input.existing && typeof input.existing === "object" ? input.existing : {}),
|
|
48
|
+
[exports.FULFILLMENT_METHOD_KEY]: "pickup",
|
|
49
|
+
[exports.PICKUP_LOCATION_ID_KEY]: input.locationId,
|
|
50
|
+
...(input.locationName
|
|
51
|
+
? { [exports.PICKUP_LOCATION_NAME_KEY]: input.locationName }
|
|
52
|
+
: {}),
|
|
53
|
+
[exports.PAYMENT_MODE_KEY]: input.paymentMode ?? "online",
|
|
54
|
+
[exports.PICKUP_STATUS_KEY]: "pending",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function buildDeliveryCartMetadata(input) {
|
|
58
|
+
const next = {
|
|
59
|
+
...(input.existing && typeof input.existing === "object" ? input.existing : {}),
|
|
60
|
+
[exports.FULFILLMENT_METHOD_KEY]: "delivery",
|
|
61
|
+
[exports.PAYMENT_MODE_KEY]: input.paymentMode ?? "online",
|
|
62
|
+
};
|
|
63
|
+
delete next[exports.PICKUP_LOCATION_ID_KEY];
|
|
64
|
+
delete next[exports.PICKUP_LOCATION_NAME_KEY];
|
|
65
|
+
delete next[exports.PICKUP_STATUS_KEY];
|
|
66
|
+
return next;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvb3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBcUJILGtEQUVDO0FBRUQsc0NBRUM7QUFFRCwwREFvQkM7QUFFRCwwREFnQkM7QUFFRCw4REFhQztBQWhGWSxRQUFBLHNCQUFzQixHQUFHLG9CQUFvQixDQUFBO0FBQzdDLFFBQUEsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUE7QUFDN0MsUUFBQSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FBQTtBQUNqRCxRQUFBLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtBQUNqQyxRQUFBLGlCQUFpQixHQUFHLGVBQWUsQ0FBQTtBQUNuQyxRQUFBLDJCQUEyQixHQUFHLGlCQUFpQixDQUFBO0FBYzVELFNBQWdCLG1CQUFtQixDQUFDLEtBQWM7SUFDaEQsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUE7QUFDbkQsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFjO0lBQzFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssY0FBYyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUE7QUFDMUUsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUNyQyxRQUFvRDtJQUVwRCxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUN4RCxNQUFNLEdBQUcsR0FBNkIsRUFBRSxDQUFBO0lBQ3hDLElBQUksbUJBQW1CLENBQUMsUUFBUSxDQUFDLDhCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELEdBQUcsQ0FBQyw4QkFBc0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyw4QkFBc0IsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsOEJBQXNCLENBQUMsQ0FBQTtJQUM1QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxHQUFHLENBQUMsOEJBQXNCLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyx3QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxHQUFHLENBQUMsd0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQWdCLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLHlCQUFpQixDQUFDLENBQUE7SUFDMUMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pFLEdBQUcsQ0FBQyx5QkFBaUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsS0FLdkM7SUFDQyxPQUFPO1FBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLENBQUMsOEJBQXNCLENBQUMsRUFBRSxRQUFvQztRQUM5RCxDQUFDLDhCQUFzQixDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDMUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ3BCLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0NBQXdCLENBQUMsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxDQUFDLHdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxRQUFRO1FBQ2pELENBQUMseUJBQWlCLENBQUMsRUFBRSxTQUFnQztLQUN0RCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLEtBR3pDO0lBQ0MsTUFBTSxJQUFJLEdBQTRCO1FBQ3BDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRSxDQUFDLDhCQUFzQixDQUFDLEVBQUUsVUFBc0M7UUFDaEUsQ0FBQyx3QkFBZ0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksUUFBUTtLQUNsRCxDQUFBO0lBQ0QsT0FBTyxJQUFJLENBQUMsOEJBQXNCLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQyxnQ0FBd0IsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sSUFBSSxDQUFDLHlCQUFpQixDQUFDLENBQUE7SUFDOUIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIn0=
|
package/README.md
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
- payment detail storage (`upi`, `bank`, `card`) and default payment rules,
|
|
10
10
|
- refund payment mapping and admin refund context tooling,
|
|
11
11
|
- order status email/notification subscribers,
|
|
12
|
-
- admin UI routes/widgets for returns, swaps, payments, refunds
|
|
12
|
+
- admin UI routes/widgets for returns, swaps, payments, refunds,
|
|
13
|
+
- **store pickup / pay-at-store** helpers (`GET /store/pickup-locations`, `POST /store/carts/:id/pickup`) and required return-store `location_id` validation.
|
|
13
14
|
|
|
14
15
|
It solves common gaps where storefronts need secure post-purchase self-service (especially for guest orders), richer refund operations, and operational admin screens without implementing all workflows manually.
|
|
15
16
|
|
|
@@ -40,6 +41,9 @@ export default defineConfig({
|
|
|
40
41
|
otpTemplate: "src/templates/emails/otp.html",
|
|
41
42
|
orderConfirmTemplate: "src/templates/emails/order-confirmation.html",
|
|
42
43
|
},
|
|
44
|
+
allowPayAtStore: true,
|
|
45
|
+
requireReturnStoreLocation: true,
|
|
46
|
+
capture_payment_on_pickup: true,
|
|
43
47
|
},
|
|
44
48
|
},
|
|
45
49
|
],
|
|
@@ -80,9 +84,14 @@ Source: `src/types/order-management-options.ts`, normalized by `src/config.ts`.
|
|
|
80
84
|
| `notifications.enabled` | `boolean` | No | `false` | Enables status-based notification subscriber handling. |
|
|
81
85
|
| `notifications.statusConfig` | `Record<string, NotificationConfig[]>` | No | `{}` | Map of order status to rules. Email/push: `template` = file path. SMS Twilio: `template` = inline body string. SMS MSG91: `template_obj: { templateId, varMap? }`. Optional `getRecipient`. |
|
|
82
86
|
| `capture_payment_on_delivered` | `boolean` | No | `true` | Auto-capture remaining authorized amount on delivery events. |
|
|
87
|
+
| `capture_payment_on_pickup` | `boolean` | No | `true` | Capture pay-at-store / authorized amount when store pickup is collected. |
|
|
88
|
+
| `allowPayAtStore` | `boolean` | No | `true` | Allow offline payment for web store-pickup carts. |
|
|
89
|
+
| `requireReturnStoreLocation` | `boolean` | No | `true` | Require a valid stock location on return/exchange create. |
|
|
83
90
|
| `returnValidInDays` | `number` | No | `7` | Return request window in days from `delivered_at`. |
|
|
84
91
|
| `exchangeValidInDays` | `number` | No | `7` | Exchange request window in days from `delivered_at`. |
|
|
85
92
|
|
|
93
|
+
Pickup / pay-at-store notification keys (under `notifications.statusConfig`): `pickup_pay_at_store_placed`, `pickup_ready`, `pickup_collected`, `pay_at_store_captured`.
|
|
94
|
+
|
|
86
95
|
Example:
|
|
87
96
|
|
|
88
97
|
```ts
|