medusa-shiprocket-fulfillment-plugin 0.1.8 → 0.2.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.
|
@@ -10,8 +10,6 @@ const handle_error_1 = require("./handle-error");
|
|
|
10
10
|
class ShiprocketClient {
|
|
11
11
|
constructor(options) {
|
|
12
12
|
this.token = null;
|
|
13
|
-
this.tokenExpiry = null;
|
|
14
|
-
this.refreshTimeout = null;
|
|
15
13
|
this.isDisposed = false;
|
|
16
14
|
if (!options.email || !options.password) {
|
|
17
15
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Shiprocket API credentials are required");
|
|
@@ -24,37 +22,43 @@ class ShiprocketClient {
|
|
|
24
22
|
headers: { "Content-Type": "application/json" },
|
|
25
23
|
timeout: 10000,
|
|
26
24
|
});
|
|
27
|
-
|
|
25
|
+
// Interceptor to handle 401 Unauthorized automatically
|
|
26
|
+
this.axios.interceptors.response.use((response) => response, async (error) => {
|
|
27
|
+
const originalRequest = error.config;
|
|
28
|
+
if (error.response?.status === 401 &&
|
|
29
|
+
!originalRequest._retry &&
|
|
30
|
+
!originalRequest.url?.includes("/auth/login")) {
|
|
31
|
+
originalRequest._retry = true;
|
|
32
|
+
try {
|
|
33
|
+
await this.refreshToken();
|
|
34
|
+
originalRequest.headers["Authorization"] = `Bearer ${this.token}`;
|
|
35
|
+
return this.axios(originalRequest);
|
|
36
|
+
}
|
|
37
|
+
catch (refreshError) {
|
|
38
|
+
return Promise.reject(refreshError);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return Promise.reject(error);
|
|
42
|
+
});
|
|
28
43
|
}
|
|
29
44
|
dispose() {
|
|
45
|
+
this.isDisposed = true;
|
|
46
|
+
this.token = null;
|
|
47
|
+
}
|
|
48
|
+
async refreshToken() {
|
|
30
49
|
if (this.isDisposed)
|
|
31
50
|
return;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
this.token = null;
|
|
37
|
-
this.tokenExpiry = null;
|
|
38
|
-
this.isDisposed = true;
|
|
51
|
+
const auth = await (0, authenticate_1.authenticate)(this.axios, this.email, this.password, this.isDisposed);
|
|
52
|
+
this.token = auth.token;
|
|
53
|
+
this.axios.defaults.headers.common["Authorization"] = `Bearer ${this.token}`;
|
|
39
54
|
}
|
|
40
|
-
async
|
|
41
|
-
if (!this.token
|
|
42
|
-
|
|
43
|
-
this.token = auth.token;
|
|
44
|
-
this.tokenExpiry = auth.tokenExpiry;
|
|
45
|
-
this.axios.defaults.headers.common["Authorization"] = `Bearer ${this.token}`;
|
|
46
|
-
if (this.refreshTimeout)
|
|
47
|
-
clearTimeout(this.refreshTimeout);
|
|
48
|
-
this.refreshTimeout = setTimeout(() => {
|
|
49
|
-
this.ensureAuthenticated().catch((error) => {
|
|
50
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to refresh Shiprocket token: ${error.message}`);
|
|
51
|
-
});
|
|
52
|
-
}, 8 * 24 * 60 * 60 * 1000 // Refresh after 8 days
|
|
53
|
-
);
|
|
55
|
+
async ensureToken() {
|
|
56
|
+
if (!this.token) {
|
|
57
|
+
await this.refreshToken();
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
60
|
async calculate(data) {
|
|
57
|
-
await this.
|
|
61
|
+
await this.ensureToken();
|
|
58
62
|
try {
|
|
59
63
|
const response = await this.axios.get("/courier/serviceability/", { params: data });
|
|
60
64
|
const availableCouriers = response.data.data.available_courier_companies;
|
|
@@ -76,8 +80,13 @@ class ShiprocketClient {
|
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
async create(fulfillment, items, order) {
|
|
79
|
-
await this.
|
|
80
|
-
const
|
|
83
|
+
await this.ensureToken();
|
|
84
|
+
const req = (val, name) => {
|
|
85
|
+
if (val === undefined || val === null || val === "") {
|
|
86
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing required field: ${name}`);
|
|
87
|
+
}
|
|
88
|
+
return val;
|
|
89
|
+
};
|
|
81
90
|
const orderItemMap = new Map();
|
|
82
91
|
if (Array.isArray(order.items)) {
|
|
83
92
|
order.items.forEach((orderItem) => {
|
|
@@ -91,46 +100,27 @@ class ShiprocketClient {
|
|
|
91
100
|
try {
|
|
92
101
|
const order_date = new Date(order.created_at)
|
|
93
102
|
.toLocaleString("en-GB", {
|
|
94
|
-
day: "2-digit",
|
|
95
|
-
|
|
96
|
-
year: "numeric",
|
|
97
|
-
hour: "2-digit",
|
|
98
|
-
minute: "2-digit",
|
|
99
|
-
hour12: false,
|
|
103
|
+
day: "2-digit", month: "2-digit", year: "numeric",
|
|
104
|
+
hour: "2-digit", minute: "2-digit", hour12: false,
|
|
100
105
|
})
|
|
101
106
|
.replace(",", "")
|
|
102
107
|
.replace(/\//g, "-");
|
|
103
|
-
|
|
104
|
-
const orderItem = orderItemMap.get(fi.line_item_id);
|
|
105
|
-
if (!orderItem) {
|
|
106
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Fulfillment item ${fi.id} (${fi.title}) has no matching order item with line_item_id: ${fi.line_item_id}`);
|
|
107
|
-
}
|
|
108
|
-
const unit = Number(orderItem.unit_price ?? orderItem.detail?.unit_price ?? 0);
|
|
109
|
-
const qty = Number(fi.quantity ?? fi.raw_quantity?.value ?? 0);
|
|
110
|
-
if (!unit || !qty) {
|
|
111
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing unit price or quantity for fulfillment item: ${JSON.stringify(fi)}`);
|
|
112
|
-
}
|
|
113
|
-
return sum + unit * qty;
|
|
114
|
-
}, 0);
|
|
115
|
-
const shipping = order.shipping_address || fulfillment?.delivery_address || {};
|
|
116
|
-
const billing = order.customer || {};
|
|
117
|
-
const region = order.region || {};
|
|
108
|
+
// Calculate totals and dimensions
|
|
118
109
|
items.forEach((item) => {
|
|
119
110
|
const orderItem = orderItemMap.get(item.line_item_id);
|
|
120
111
|
if (!orderItem) {
|
|
121
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order item not found for fulfillment item: ${item.title}
|
|
112
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order item not found for fulfillment item: ${item.title}`);
|
|
122
113
|
}
|
|
123
114
|
const variant = orderItem.variant;
|
|
124
115
|
if (!variant) {
|
|
125
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant data
|
|
116
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant data missing for item: ${item.title}`);
|
|
126
117
|
}
|
|
127
118
|
const weight = Number(variant.weight || 0) / 1000;
|
|
128
119
|
const length = Number(variant.length || 0);
|
|
129
120
|
const breadth = Number(variant.width || 0);
|
|
130
121
|
const height = Number(variant.height || 0);
|
|
131
122
|
if (!weight || !length || !breadth || !height) {
|
|
132
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing dimensions/weight for item "${item.title}"
|
|
133
|
-
Please set weight, length, width, and height in the product variant settings in Medusa Admin.`);
|
|
123
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing dimensions/weight for item "${item.title}". Please update product variant settings.`);
|
|
134
124
|
}
|
|
135
125
|
const quantity = Number(item.quantity || item.raw_quantity?.value || 1);
|
|
136
126
|
totalWeight += weight * quantity;
|
|
@@ -138,36 +128,38 @@ class ShiprocketClient {
|
|
|
138
128
|
totalBreadth = Math.max(totalBreadth, breadth);
|
|
139
129
|
totalHeight += height * quantity;
|
|
140
130
|
});
|
|
131
|
+
const shipping = order.shipping_address || fulfillment?.delivery_address || {};
|
|
132
|
+
const billing = order.billing_address || order.customer || {};
|
|
133
|
+
// Build Order Payload with STRICT validation
|
|
141
134
|
const orderData = {
|
|
142
|
-
order_id: order.id
|
|
135
|
+
order_id: `${order.id}-${Math.floor(Date.now() / 1000)}`, // Safer randomness
|
|
143
136
|
order_date,
|
|
144
137
|
pickup_location: this.pickup_location || "Primary",
|
|
145
|
-
billing_customer_name:
|
|
146
|
-
billing_last_name:
|
|
147
|
-
billing_address:
|
|
148
|
-
billing_address_2:
|
|
149
|
-
billing_city:
|
|
150
|
-
billing_pincode: Number(
|
|
151
|
-
billing_state:
|
|
152
|
-
billing_country:
|
|
153
|
-
billing_email:
|
|
154
|
-
billing_phone: Number(
|
|
138
|
+
billing_customer_name: req(billing.first_name, "Billing First Name"),
|
|
139
|
+
billing_last_name: billing.last_name || "",
|
|
140
|
+
billing_address: req(shipping.address_1 || billing.address_1, "Billing Address 1"),
|
|
141
|
+
billing_address_2: shipping.address_2 || billing.address_2 || "",
|
|
142
|
+
billing_city: req(shipping.city || billing.city, "Billing City"),
|
|
143
|
+
billing_pincode: Number(req(shipping.postal_code || billing.postal_code, "Billing Pincode")),
|
|
144
|
+
billing_state: req(shipping.province || billing.province, "Billing State"),
|
|
145
|
+
billing_country: req(shipping.country_code || billing.country_code || "IN", "Billing Country"),
|
|
146
|
+
billing_email: req(billing.email || order.email, "Billing Email"),
|
|
147
|
+
billing_phone: Number(req(shipping.phone || billing.phone, "Billing Phone").toString().replace(/[^0-9]/g, "")),
|
|
155
148
|
shipping_is_billing: true,
|
|
156
|
-
shipping_customer_name:
|
|
157
|
-
shipping_last_name:
|
|
158
|
-
shipping_address:
|
|
159
|
-
shipping_address_2:
|
|
160
|
-
shipping_city:
|
|
161
|
-
shipping_pincode: Number(
|
|
162
|
-
shipping_country:
|
|
163
|
-
shipping_state:
|
|
164
|
-
shipping_email:
|
|
165
|
-
shipping_phone: Number(
|
|
149
|
+
shipping_customer_name: req(shipping.first_name, "Shipping First Name"),
|
|
150
|
+
shipping_last_name: shipping.last_name || "",
|
|
151
|
+
shipping_address: req(shipping.address_1, "Shipping Address 1"),
|
|
152
|
+
shipping_address_2: shipping.address_2 || "",
|
|
153
|
+
shipping_city: req(shipping.city, "Shipping City"),
|
|
154
|
+
shipping_pincode: Number(req(shipping.postal_code, "Shipping Pincode")),
|
|
155
|
+
shipping_country: req(shipping.country_code || "IN", "Shipping Country"),
|
|
156
|
+
shipping_state: req(shipping.province, "Shipping State"),
|
|
157
|
+
shipping_email: req(billing.email || order.email, "Shipping Email"),
|
|
158
|
+
shipping_phone: Number(req(shipping.phone, "Shipping Phone").toString().replace(/[^0-9]/g, "")),
|
|
166
159
|
order_items: items.map((item) => {
|
|
167
160
|
const orderItem = orderItemMap.get(item.line_item_id);
|
|
168
161
|
const variant = orderItem.variant;
|
|
169
162
|
const selling_price = Math.round(Number(orderItem.unit_price || orderItem.detail?.unit_price || 0));
|
|
170
|
-
const hsn_code = variant.hs_code ? Number(variant.hs_code) : 0;
|
|
171
163
|
return {
|
|
172
164
|
name: item.title,
|
|
173
165
|
sku: variant.sku || orderItem.variant_sku || item.sku || item.id,
|
|
@@ -175,15 +167,16 @@ class ShiprocketClient {
|
|
|
175
167
|
selling_price,
|
|
176
168
|
discount: "",
|
|
177
169
|
tax: "",
|
|
178
|
-
hsn:
|
|
170
|
+
hsn: Number(variant.hs_code || 0),
|
|
179
171
|
};
|
|
180
172
|
}),
|
|
181
173
|
payment_method: "Prepaid",
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
174
|
+
sub_total: items.reduce((sum, item) => {
|
|
175
|
+
const orderItem = orderItemMap.get(item.line_item_id);
|
|
176
|
+
const price = Number(orderItem.unit_price || orderItem.detail?.unit_price || 0);
|
|
177
|
+
const qty = Number(item.quantity || item.raw_quantity?.value || 1);
|
|
178
|
+
return sum + (price * qty);
|
|
179
|
+
}, 0),
|
|
187
180
|
length: totalLength,
|
|
188
181
|
breadth: totalBreadth,
|
|
189
182
|
height: totalHeight,
|
|
@@ -192,120 +185,140 @@ class ShiprocketClient {
|
|
|
192
185
|
const orderCreated = await this.axios
|
|
193
186
|
.post("/orders/create/adhoc", orderData)
|
|
194
187
|
.catch((err) => {
|
|
188
|
+
// Extract deep error message if available
|
|
195
189
|
const apiError = err;
|
|
196
190
|
const firstError = apiError.response?.data?.errors
|
|
197
191
|
? Object.values(apiError.response.data.errors)[0][0]
|
|
198
|
-
:
|
|
199
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, firstError);
|
|
192
|
+
: err.message;
|
|
193
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Shiprocket Error: ${firstError}`);
|
|
200
194
|
});
|
|
201
195
|
if (!orderCreated.data?.shipment_id) {
|
|
202
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create Shiprocket order");
|
|
196
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create Shiprocket order: No shipment ID returned");
|
|
203
197
|
}
|
|
198
|
+
// Assign AWB
|
|
204
199
|
const awbCreated = await this.axios.post(`/courier/assign/awb`, {
|
|
205
200
|
shipment_id: orderCreated.data.shipment_id,
|
|
206
|
-
courier_id: orderCreated.data.courier_company_id,
|
|
207
201
|
});
|
|
208
202
|
if (awbCreated.data.awb_assign_status !== 1) {
|
|
203
|
+
// Try to cancel if AWB fails to avoid stuck orders
|
|
209
204
|
try {
|
|
210
205
|
await this.cancel(orderCreated.data.order_id);
|
|
211
206
|
}
|
|
212
|
-
catch (
|
|
213
|
-
// swallow cancel error but log upstream if needed
|
|
214
|
-
}
|
|
207
|
+
catch (e) { /* ignore */ }
|
|
215
208
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, awbCreated.data.message || "AWB assignment failed");
|
|
216
209
|
}
|
|
210
|
+
const responseData = awbCreated.data.response.data;
|
|
217
211
|
return {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
courier_name: orderCreated.data.courier_name,
|
|
225
|
-
tracking_number: awbCreated.data.response.data.awb_code,
|
|
226
|
-
tracking_url: "https://shiprocket.co/tracking/" + awbCreated.data.response.data.awb_code,
|
|
227
|
-
label_url: orderCreated.data.label_url,
|
|
228
|
-
shipping_charges: orderCreated.data.shipping_charges,
|
|
229
|
-
payment_method: orderCreated.data.payment_method,
|
|
230
|
-
transaction_charges: orderCreated.data.transaction_charges,
|
|
231
|
-
giftwrap_charges: orderCreated.data.giftwrap_charges,
|
|
212
|
+
...orderCreated.data,
|
|
213
|
+
awb: responseData.awb_code,
|
|
214
|
+
courier_company_id: responseData.courier_company_id,
|
|
215
|
+
courier_name: responseData.courier_name || orderCreated.data.courier_name,
|
|
216
|
+
tracking_number: responseData.awb_code,
|
|
217
|
+
tracking_url: `https://shiprocket.co/tracking/${responseData.awb_code}`,
|
|
232
218
|
};
|
|
233
219
|
}
|
|
234
220
|
catch (error) {
|
|
235
221
|
(0, handle_error_1.handleError)(error);
|
|
236
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Order creation failed
|
|
222
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Order creation failed");
|
|
237
223
|
}
|
|
238
224
|
}
|
|
239
225
|
async cancel(orderId) {
|
|
240
|
-
await this.
|
|
226
|
+
await this.ensureToken();
|
|
241
227
|
try {
|
|
242
228
|
await this.axios.post(`/orders/cancel`, { ids: [orderId] });
|
|
243
229
|
}
|
|
244
230
|
catch (error) {
|
|
245
231
|
(0, handle_error_1.handleError)(error);
|
|
246
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, error.message || "Order cancellation failed unexpectedly");
|
|
247
232
|
}
|
|
248
233
|
}
|
|
249
234
|
async getTrackingInfo(trackingNumber) {
|
|
250
|
-
await this.
|
|
235
|
+
await this.ensureToken();
|
|
251
236
|
try {
|
|
252
237
|
const response = await this.axios.get(`/courier/track/awb/${trackingNumber}`);
|
|
253
238
|
return response.data;
|
|
254
239
|
}
|
|
255
240
|
catch (error) {
|
|
256
241
|
(0, handle_error_1.handleError)(error);
|
|
257
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Tracking
|
|
242
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Tracking failed");
|
|
258
243
|
}
|
|
259
244
|
}
|
|
260
245
|
async createReturn(fulfillment) {
|
|
261
|
-
await this.
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
246
|
+
await this.ensureToken();
|
|
247
|
+
// Implementation of Return Order
|
|
248
|
+
// Note: Shiprocket Return API requires specific fields.
|
|
249
|
+
// We assume 'fulfillment' contains necessary return details linked to the original order.
|
|
250
|
+
const returnData = {
|
|
251
|
+
order_id: `${fulfillment.id}-${Math.floor(Date.now() / 1000)}`,
|
|
252
|
+
order_date: new Date().toISOString().split('T')[0],
|
|
253
|
+
cannel_id: "", // Optional
|
|
254
|
+
pickup_customer_name: fulfillment.pickup_address?.first_name,
|
|
255
|
+
pickup_last_name: fulfillment.pickup_address?.last_name || "",
|
|
256
|
+
pickup_address: fulfillment.pickup_address?.address_1,
|
|
257
|
+
pickup_address_2: fulfillment.pickup_address?.address_2 || "",
|
|
258
|
+
pickup_city: fulfillment.pickup_address?.city,
|
|
259
|
+
pickup_state: fulfillment.pickup_address?.province,
|
|
260
|
+
pickup_country: fulfillment.pickup_address?.country_code || "India",
|
|
261
|
+
pickup_pincode: fulfillment.pickup_address?.postal_code,
|
|
262
|
+
pickup_email: fulfillment.email,
|
|
263
|
+
pickup_phone: fulfillment.pickup_address?.phone,
|
|
264
|
+
order_items: fulfillment.items.map((item) => ({
|
|
265
|
+
name: item.title,
|
|
266
|
+
sku: item.sku,
|
|
267
|
+
units: item.quantity,
|
|
268
|
+
selling_price: item.unit_price,
|
|
269
|
+
discount: "",
|
|
270
|
+
qc_enable: false // default false
|
|
271
|
+
})),
|
|
272
|
+
payment_method: "Prepaid",
|
|
273
|
+
total_discount: "0",
|
|
274
|
+
sub_total: fulfillment.sub_total || 0,
|
|
275
|
+
length: 10, breadth: 10, height: 10, weight: 0.5 // defaults if missing on return items
|
|
278
276
|
};
|
|
277
|
+
try {
|
|
278
|
+
const response = await this.axios.post(`/orders/create/return`, returnData);
|
|
279
|
+
return response.data;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
(0, handle_error_1.handleError)(error);
|
|
283
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create return order");
|
|
284
|
+
}
|
|
279
285
|
}
|
|
280
286
|
async createDocuments(fulfillment) {
|
|
281
|
-
await this.
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
287
|
+
await this.ensureToken();
|
|
288
|
+
const createPromise = (url, params) => this.axios.get(url, { params }).catch(() => ({ data: null })); // Return null on fail to not break all
|
|
289
|
+
const [manifestRes, labelRes, invoiceRes] = await Promise.all([
|
|
290
|
+
createPromise(`/manifests/generate`, { order_ids: [fulfillment.shipment_id] }),
|
|
291
|
+
createPromise(`/courier/generate/label`, { shipment_id: [fulfillment.shipment_id] }),
|
|
292
|
+
createPromise(`/orders/print/invoice`, { ids: [fulfillment.order_id] })
|
|
293
|
+
]);
|
|
294
|
+
const extractUrl = (res, key, checkKey, checkVal) => {
|
|
295
|
+
if (!res?.data)
|
|
296
|
+
return "";
|
|
297
|
+
const item = Array.isArray(res.data) ? res.data[0] : res.data;
|
|
298
|
+
if (checkKey && item[checkKey] !== checkVal)
|
|
299
|
+
return "";
|
|
300
|
+
return item[key] || "";
|
|
301
|
+
};
|
|
291
302
|
return {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
invoice:
|
|
303
|
+
manifest: extractUrl(manifestRes, "manifest_url", "status", 1),
|
|
304
|
+
label: extractUrl(labelRes, "label_url", "label_created", 1),
|
|
305
|
+
invoice: extractUrl(invoiceRes, "invoice_url", "is_invoice_created", true),
|
|
295
306
|
};
|
|
296
307
|
}
|
|
297
308
|
async generateLabel(fulfillment) {
|
|
298
|
-
|
|
299
|
-
|
|
309
|
+
await this.ensureToken();
|
|
310
|
+
const res = await this.axios.get(`/courier/generate/label`, {
|
|
311
|
+
params: { shipment_id: [fulfillment.shipment_id] }
|
|
300
312
|
});
|
|
301
|
-
return
|
|
313
|
+
return res.data?.[0]?.label_url || "";
|
|
302
314
|
}
|
|
303
315
|
async generateInvoice(fulfillment) {
|
|
304
|
-
|
|
305
|
-
|
|
316
|
+
await this.ensureToken();
|
|
317
|
+
const res = await this.axios.get(`/orders/print/invoice`, {
|
|
318
|
+
params: { ids: [fulfillment.order_id] }
|
|
306
319
|
});
|
|
307
|
-
return
|
|
320
|
+
return res.data?.[0]?.invoice_url || "";
|
|
308
321
|
}
|
|
309
322
|
}
|
|
310
323
|
exports.default = ShiprocketClient;
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3NoaXByb2NrZXQvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTRDO0FBQzVDLDJDQUE2QztBQUM3Qyx5REFBcUQ7QUFDckQsaURBQTRDO0FBVTVDLE1BQU0sZ0JBQWdCO0lBVWxCLFlBQVksT0FBZ0M7UUFMcEMsVUFBSyxHQUFrQixJQUFJLENBQUE7UUFDM0IsZ0JBQVcsR0FBa0IsSUFBSSxDQUFBO1FBQ2pDLG1CQUFjLEdBQTBCLElBQUksQ0FBQTtRQUM1QyxlQUFVLEdBQUcsS0FBSyxDQUFBO1FBR3RCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHlDQUF5QyxDQUM1QyxDQUFBO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUE7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFBO1FBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixPQUFPLEVBQUUseUNBQXlDO1lBQ2xELE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtZQUMvQyxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFNO1FBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO0lBQzFCLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSwyQkFBWSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN2RixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFBO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDNUUsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUM1QixHQUFHLEVBQUU7Z0JBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsdUNBQXVDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDekQsQ0FBQTtnQkFDTCxDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHVCQUF1QjthQUNsRCxDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQW9DO1FBQ2hELE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFFaEMsSUFBSSxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDakMsMEJBQTBCLEVBQzFCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNuQixDQUFBO1lBRUQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQTtZQUN4RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLHNDQUFzQyxDQUN6QyxDQUFBO1lBQ0wsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNO2dCQUM3QyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0UsQ0FBQyxDQUFDLGlCQUFpQixDQUFBO1lBRXZCLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLDhDQUE4QyxDQUNqRCxDQUFBO1lBQ0wsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDcEQsQ0FBQTtZQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBQSwwQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsc0NBQXNDLENBQ3pDLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQ1IsV0FBZ0IsRUFDaEIsS0FBWSxFQUNaLEtBQVU7UUFFVixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBTSxFQUFFLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRWxFLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7UUFFRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFDbkIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBO1FBQ25CLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUNwQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFFbkIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztpQkFDeEMsY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDckIsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2dCQUNmLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDO2lCQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO2lCQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBRXhCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssbURBQW1ELEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FDN0csQ0FBQTtnQkFDTCxDQUFDO2dCQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUM5RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFFOUQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNoQixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix3REFBd0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUMvRSxDQUFBO2dCQUNMLENBQUM7Z0JBRUQsT0FBTyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQTtZQUMzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFTCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLElBQUksV0FBVyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsQ0FBQTtZQUM5RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQTtZQUNwQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQTtZQUVqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUNyRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOENBQThDLElBQUksQ0FBQyxLQUFLLG1CQUFtQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQ2xHLENBQUE7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMENBQTBDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0QsQ0FBQTtnQkFDTCxDQUFDO2dCQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQTtnQkFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUE7Z0JBQzFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFFMUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QyxNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1Q0FBdUMsSUFBSSxDQUFDLEtBQUssa0JBQWtCLFNBQVMsQ0FBQyxFQUFFLGNBQWMsT0FBTyxDQUFDLEVBQUU7MEdBQ3JCLENBQ3JGLENBQUE7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFDdkUsV0FBVyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUE7Z0JBQ2hDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFDM0MsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUM5QyxXQUFXLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQTtZQUNwQyxDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sU0FBUyxHQUFHO2dCQUNkLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hFLFVBQVU7Z0JBQ1YsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksU0FBUztnQkFFbEQscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNuRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQzlDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQzdDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDckMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0QsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDMUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztnQkFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEMsYUFBYSxFQUFFLE1BQU0sQ0FDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDdkU7Z0JBRUQsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNyRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzlELGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztnQkFDNUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsY0FBYyxFQUFFLE1BQU0sQ0FDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDdkU7Z0JBRUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFFLENBQUE7b0JBQ3RELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFRLENBQUE7b0JBRWxDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUNwRSxDQUFBO29CQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFFOUQsT0FBTzt3QkFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2hCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRTt3QkFDaEUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQzt3QkFDN0QsYUFBYTt3QkFDYixRQUFRLEVBQUUsRUFBRTt3QkFDWixHQUFHLEVBQUUsRUFBRTt3QkFDUCxHQUFHLEVBQUUsUUFBUTtxQkFDaEIsQ0FBQTtnQkFDTCxDQUFDLENBQUM7Z0JBRUYsY0FBYyxFQUFFLFNBQVM7Z0JBQ3pCLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELFNBQVMsRUFBRSxTQUFTO2dCQUVwQixNQUFNLEVBQUUsV0FBVztnQkFDbkIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixNQUFNLEVBQUUsV0FBVzthQUN0QixDQUFBO1lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSztpQkFDaEMsSUFBSSxDQUFnQyxzQkFBc0IsRUFBRSxTQUFTLENBQUM7aUJBQ3RFLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNYLE1BQU0sUUFBUSxHQUFHLEdBQXNFLENBQUE7Z0JBQ3ZGLE1BQU0sVUFBVSxHQUNaLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU07b0JBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtnQkFDekIsTUFBTSxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3JFLENBQUMsQ0FBQyxDQUFBO1lBRU4sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1DQUFtQyxDQUN0QyxDQUFBO1lBQ0wsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQzVELFdBQVcsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQzFDLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQjthQUNuRCxDQUFDLENBQUE7WUFFRixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQztvQkFDRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDakQsQ0FBQztnQkFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO29CQUNoQixrREFBa0Q7Z0JBQ3RELENBQUM7Z0JBRUQsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksdUJBQXVCLENBQ3JELENBQUE7WUFDTCxDQUFDO1lBRUQsT0FBTztnQkFDSCxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNwQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUMxQyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUNoQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUMxQyxHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQzNDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3BFLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQzVDLGVBQWUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDdkQsWUFBWSxFQUFFLGlDQUFpQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUN4RixTQUFTLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO2dCQUN0QyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQjtnQkFDcEQsY0FBYyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDaEQsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7Z0JBQzFELGdCQUFnQixFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2FBQ3ZELENBQUE7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUEsMEJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQTtZQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLG9DQUFvQyxDQUN2QyxDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWU7UUFDeEIsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUEsMEJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQTtZQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLEtBQUssQ0FBQyxPQUFPLElBQUksd0NBQXdDLENBQzVELENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsY0FBc0I7UUFDeEMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNqQyxzQkFBc0IsY0FBYyxFQUFFLENBQ3pDLENBQUE7WUFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUE7UUFDeEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixJQUFBLDBCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyw2Q0FBNkMsQ0FDaEQsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFnQjtRQUMvQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhDLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLHlEQUF5RCxDQUM1RCxDQUFBO1FBRUQsT0FBTztZQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsV0FBVztZQUNqQyxXQUFXLEVBQUUsV0FBVyxDQUFDLFdBQVc7WUFDcEMsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLEdBQUc7WUFDaEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixZQUFZLEVBQUUsS0FBSztZQUNuQixlQUFlLEVBQUUsWUFBWTtZQUM3QixZQUFZLEVBQUUsRUFBRTtZQUNoQixTQUFTLEVBQUUsRUFBRTtZQUNiLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGdCQUFnQixFQUFFLEdBQUc7WUFDckIsbUJBQW1CLEVBQUUsR0FBRztZQUN4QixnQkFBZ0IsRUFBRSxHQUFHO1NBQ3hCLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFnQjtRQUNsQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUU7WUFDekQsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1NBQ25ELENBQUMsQ0FBQTtRQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1NBQ3JELENBQUMsQ0FBQTtRQUNGLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1NBQzFDLENBQUMsQ0FBQTtRQUVGLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDdkUsQ0FBQTtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQWdCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1NBQ3JELENBQUMsQ0FBQTtRQUNGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFnQjtRQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFO1lBQzFELE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRTtTQUMxQyxDQUFDLENBQUE7UUFDRixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUE7SUFDakMsQ0FBQztDQUNKO0FBRUQsa0JBQWUsZ0JBQWdCLENBQUEifQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3NoaXByb2NrZXQvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTRDO0FBQzVDLDJDQUE2QztBQUM3Qyx5REFBcUQ7QUFDckQsaURBQTRDO0FBVTVDLE1BQXFCLGdCQUFnQjtJQVFqQyxZQUFZLE9BQWdDO1FBSHBDLFVBQUssR0FBa0IsSUFBSSxDQUFBO1FBQzNCLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFHdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIseUNBQXlDLENBQzVDLENBQUE7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3RCLE9BQU8sRUFBRSx5Q0FBeUM7WUFDbEQsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1lBQy9DLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQTtRQUVGLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNoQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUN0QixLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDWixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO1lB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
|
|
@@ -97,8 +97,7 @@ class ShipRocketFulfillmentProviderService extends utils_1.AbstractFulfillmentPr
|
|
|
97
97
|
tracking_number: externalData.tracking_number || "",
|
|
98
98
|
tracking_url: externalData.tracking_url || "",
|
|
99
99
|
label_url: label || "",
|
|
100
|
-
invoice_url: invoice || "",
|
|
101
|
-
manifest_url: manifest || "",
|
|
100
|
+
// invoice_url: invoice || "", // types might not support this in label object, but okay to omit if not needed
|
|
102
101
|
},
|
|
103
102
|
],
|
|
104
103
|
};
|
|
@@ -126,7 +125,6 @@ class ShipRocketFulfillmentProviderService extends utils_1.AbstractFulfillmentPr
|
|
|
126
125
|
*/
|
|
127
126
|
async createReturnFulfillment(fulfillment) {
|
|
128
127
|
const externalData = await this.client.createReturn(fulfillment);
|
|
129
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Not Implemented. Please create a return order manually.");
|
|
130
128
|
return {
|
|
131
129
|
data: {
|
|
132
130
|
...(fulfillment || {}),
|
|
@@ -134,7 +132,7 @@ class ShipRocketFulfillmentProviderService extends utils_1.AbstractFulfillmentPr
|
|
|
134
132
|
},
|
|
135
133
|
labels: [
|
|
136
134
|
{
|
|
137
|
-
tracking_number: externalData.tracking_number || "",
|
|
135
|
+
tracking_number: externalData.tracking_number || externalData.awb || "",
|
|
138
136
|
tracking_url: externalData.tracking_url || "",
|
|
139
137
|
label_url: externalData.label_url || "",
|
|
140
138
|
},
|
|
@@ -203,4 +201,4 @@ class ShipRocketFulfillmentProviderService extends utils_1.AbstractFulfillmentPr
|
|
|
203
201
|
}
|
|
204
202
|
ShipRocketFulfillmentProviderService.identifier = "shiprocket";
|
|
205
203
|
exports.default = ShipRocketFulfillmentProviderService;
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvc2hpcHJvY2tldC9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQTRGO0FBYTVGLHNEQUF3QztBQWF4QyxNQUFNLG9DQUFxQyxTQUFRLDBDQUFrQztJQU9qRjs7OztPQUlHO0lBQ0gsWUFBWSxFQUFFLE1BQU0sRUFBd0IsRUFBRSxPQUFnQjtRQUMxRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQztZQUMvQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtTQUMzQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQjtRQUN2QixPQUFPO1lBQ0g7Z0JBQ0ksRUFBRSxFQUFFLG1CQUFtQjtnQkFDdkIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsU0FBUyxFQUFFLEtBQUs7YUFDbkI7WUFDRDtnQkFDSSxFQUFFLEVBQUUsaUJBQWlCO2dCQUNyQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixTQUFTLEVBQUUsSUFBSTthQUNsQjtTQUNKLENBQUM7SUFDTixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBNkI7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBRUgsS0FBSyxDQUFDLGNBQWMsQ0FDaEIsVUFBeUQsRUFDekQsSUFBNkMsRUFDN0MsT0FBbUQ7UUFFbkQsTUFBTSxNQUFNLEdBQUc7WUFD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
|
package/README.md
CHANGED
|
@@ -1,236 +1,161 @@
|
|
|
1
|
-
<h1 align="center">
|
|
2
|
-
<br>
|
|
3
|
-
<a href="http://www.shiprocket.in"><img src="https://i.postimg.cc/zGzTRdqp/id-Nga-I3rk-T-logos.png" alt="Markdownify" width="200"></a>
|
|
4
|
-
<br>
|
|
5
|
-
for Medusa 2.0+
|
|
6
|
-
<br>
|
|
7
|
-
</h1>
|
|
8
|
-
|
|
9
1
|
<p align="center">
|
|
10
|
-
|
|
11
|
-
<img src="https://
|
|
12
|
-
|
|
13
|
-
<img src="https://img.shields.io/github/last-commit/SAM-AEL/medusa-cashfree-payment-plugin" alt="medusa-cashfree-payment-plugin">
|
|
2
|
+
<a href="https://www.shiprocket.in">
|
|
3
|
+
<img src="https://custom-icon-badges.demolab.com/badge/Shiprocket-purple?style=for-the-badge&logo=package&logoColor=white" alt="Shiprocket Logo" height="50">
|
|
4
|
+
</a>
|
|
14
5
|
</p>
|
|
15
|
-
|
|
16
|
-
<
|
|
6
|
+
|
|
7
|
+
<h1 align="center">Medusa Shiprocket Fulfillment Plugin</h1>
|
|
17
8
|
|
|
18
9
|
<p align="center">
|
|
19
|
-
<
|
|
20
|
-
<a href="#%EF%B8%8F-installation">Installation</a> •
|
|
21
|
-
<a href="#-setup-guide">Setup Guide</a> •
|
|
22
|
-
<a href="#-api-reference">API Reference</a> •
|
|
23
|
-
<a href="#-troubleshooting">Troubleshooting</a> •
|
|
24
|
-
<a href="#-contributing">Contributing</a> •
|
|
25
|
-
<a href="#-license">License</a>
|
|
10
|
+
<strong>Seamless Logistics for Medusa v2 Stores in India 🇮🇳</strong>
|
|
26
11
|
</p>
|
|
27
12
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://www.npmjs.com/package/medusa-shiprocket-fulfillment-plugin">
|
|
15
|
+
<img src="https://img.shields.io/npm/v/medusa-shiprocket-fulfillment-plugin?color=blue&style=flat-square" alt="NPM Version">
|
|
16
|
+
</a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/medusa-shiprocket-fulfillment-plugin">
|
|
18
|
+
<img src="https://img.shields.io/npm/dw/medusa-shiprocket-fulfillment-plugin?style=flat-square" alt="NPM Downloads">
|
|
19
|
+
</a>
|
|
20
|
+
<a href="https://github.com/SAM-AEL/medusa-shiprocket-fulfillment-plugin/blob/main/LICENSE">
|
|
21
|
+
<img src="https://img.shields.io/github/license/SAM-AEL/medusa-shiprocket-fulfillment-plugin?style=flat-square" alt="License">
|
|
22
|
+
</a>
|
|
23
|
+
</p>
|
|
35
24
|
|
|
36
|
-
|
|
25
|
+
<hr />
|
|
37
26
|
|
|
38
|
-
|
|
27
|
+
## 🚀 Overview
|
|
39
28
|
|
|
40
|
-
|
|
29
|
+
The **Medusa Shiprocket Fulfillment Plugin** integrates [Shiprocket](https://www.shiprocket.in/), India's leading logistics aggregator, directly into your [Medusa](https://medusajs.com/) store.
|
|
41
30
|
|
|
42
|
-
|
|
31
|
+
Streamline your shipping operations by automating rate calculations, order creation, label generation, and returns—all from within the Medusa Admin.
|
|
43
32
|
|
|
44
|
-
|
|
33
|
+
**Compatible with Medusa v2.0+**
|
|
45
34
|
|
|
46
|
-
##
|
|
35
|
+
## ✨ Key Features
|
|
47
36
|
|
|
48
|
-
|
|
37
|
+
| Feature | Description |
|
|
38
|
+
| :--- | :--- |
|
|
39
|
+
| **💵 Automated Rates** | Fetch real-time shipping rates at checkout based on pickup and delivery pin codes. |
|
|
40
|
+
| **📦 Seamless Fulfillment** | Automatically create shipments in Shiprocket when you fulfill an order in Medusa. |
|
|
41
|
+
| **📄 Document Generation** | Generate and retrieve **Shipping Labels**, **Manifests**, and **Invoices** directly. |
|
|
42
|
+
| **↩️ Returns Management** | Handle return requests and generate reverse pickup shipments effortlessly. |
|
|
43
|
+
| **🇮🇳 India-First** | Optimized for Indian addresses, GST compliance, and domestic courier networks. |
|
|
44
|
+
| **🛑 Easy Cancellation** | Cancel shipments instantly from the Medusa Admin to void labels. |
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
## 📋 Prerequisites
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
Before you begin, ensure you have:
|
|
53
49
|
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
1. A **[Medusa v2](https://docs.medusajs.com/)** server set up.
|
|
51
|
+
2. A **[Shiprocket](https://app.shiprocket.in/register)** account.
|
|
52
|
+
3. At least one **Pickup Location** configured in your Shiprocket dashboard.
|
|
56
53
|
|
|
57
54
|
## 🛠️ Installation
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Choose your preferred package manager:
|
|
56
|
+
Install the plugin using your preferred package manager:
|
|
62
57
|
|
|
63
58
|
```bash
|
|
59
|
+
npm install medusa-shiprocket-fulfillment-plugin
|
|
60
|
+
# or
|
|
61
|
+
yarn add medusa-shiprocket-fulfillment-plugin
|
|
62
|
+
```
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
npm install medusa-shiprocket-fulfillment-plugin
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
# yarn
|
|
72
|
-
|
|
73
|
-
yarn add medusa-shiprocket-fulfillment-plugin
|
|
74
|
-
|
|
64
|
+
## ⚙️ Configuration
|
|
75
65
|
|
|
66
|
+
### 1. Environment Variables
|
|
76
67
|
|
|
77
|
-
|
|
68
|
+
Add your Shiprocket credentials to your `.env` file.
|
|
78
69
|
|
|
79
|
-
|
|
70
|
+
> [!WARNING]
|
|
71
|
+
> **Security Note**: Never commit your actual API passwords to version control (git).
|
|
80
72
|
|
|
73
|
+
```bash
|
|
74
|
+
SHIPROCKET_EMAIL="your_email@example.com"
|
|
75
|
+
SHIPROCKET_PASSWORD="your_shiprocket_password"
|
|
76
|
+
# Must match the 'Nickname' of a pickup location in your Shiprocket settings
|
|
77
|
+
SHIPROCKET_PICKUP_LOCATION="Primary"
|
|
81
78
|
```
|
|
82
79
|
|
|
83
|
-
|
|
80
|
+
### 2. Medusa Config
|
|
84
81
|
|
|
85
|
-
|
|
82
|
+
Register the plugin in your `medusa-config.js` (or `medusa-config.ts`) file. You need to add it to both the `modules` (for the fulfillment provider) and `plugins` (if you are using any admin widgets, though currently optional).
|
|
86
83
|
|
|
87
84
|
```javascript
|
|
88
85
|
module.exports = defineConfig({
|
|
89
|
-
|
|
90
|
-
// other configs
|
|
91
|
-
|
|
86
|
+
// ... other config
|
|
92
87
|
modules: [
|
|
93
|
-
|
|
94
|
-
// other plugins
|
|
95
|
-
|
|
96
88
|
{
|
|
97
89
|
resolve: "@medusajs/medusa/fulfillment",
|
|
98
90
|
options: {
|
|
99
91
|
providers: [
|
|
100
92
|
{
|
|
101
|
-
resolve:
|
|
102
|
-
"medusa-shiprocket-fulfillment-plugin/providers/shiprocket",
|
|
93
|
+
resolve: "medusa-shiprocket-fulfillment-plugin",
|
|
103
94
|
id: "shiprocket",
|
|
104
95
|
options: {
|
|
105
96
|
email: process.env.SHIPROCKET_EMAIL,
|
|
106
97
|
password: process.env.SHIPROCKET_PASSWORD,
|
|
107
98
|
pickup_location: process.env.SHIPROCKET_PICKUP_LOCATION,
|
|
99
|
+
/**
|
|
100
|
+
* Set "true" (string) to enable Cash on Delivery support.
|
|
101
|
+
* This maps the payment method 'cod' to Shiprocket's COD logic.
|
|
102
|
+
*/
|
|
103
|
+
cod: "false",
|
|
108
104
|
},
|
|
109
105
|
},
|
|
110
106
|
],
|
|
111
107
|
},
|
|
112
108
|
},
|
|
113
109
|
],
|
|
114
|
-
plugins: [
|
|
115
|
-
{
|
|
116
|
-
resolve: "medusa-shiprocket-fulfillment-plugin",
|
|
117
|
-
options: {
|
|
118
|
-
email: process.env.SHIPROCKET_EMAIL,
|
|
119
|
-
password: process.env.SHIPROCKET_PASSWORD,
|
|
120
|
-
pickup_location: process.env.SHIPROCKET_PICKUP_LOCATION,
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
],
|
|
124
110
|
});
|
|
125
111
|
```
|
|
126
112
|
|
|
127
|
-
|
|
113
|
+
## 💻 Usage Guide
|
|
128
114
|
|
|
129
|
-
|
|
115
|
+
### Enabling the Provider
|
|
130
116
|
|
|
131
|
-
|
|
117
|
+
1. Log in to your **Medusa Admin**.
|
|
118
|
+
2. Go to **Settings** → **Regions**.
|
|
119
|
+
3. Select the region you want to ship to (e.g., "India").
|
|
120
|
+
4. In the **Fulfillment Providers** section, edit and ensure `shiprocket` is selected.
|
|
121
|
+
5. Save changes.
|
|
132
122
|
|
|
133
|
-
|
|
123
|
+
### Shipping Options
|
|
134
124
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
SHIPROCKET_PICKUP_LOCATION=Primary
|
|
125
|
+
You can now create Shipping Options (e.g., "Standard Shipping") that use the **shiprocket** provider.
|
|
126
|
+
- **Calculated**: Choose "Calculated" price type to use Shiprocket's real-time rate API.
|
|
138
127
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
### Creating a Fulfillment (Shipment)
|
|
129
|
+
When you fulfill an order in the Medusa Admin:
|
|
130
|
+
1. The plugin creates an order in Shiprocket.
|
|
131
|
+
2. It attempts to automatically assign an AWB (Air Waybill) using Shiprocket's "adhoc" API.
|
|
132
|
+
3. If successful, the **Tracking Number** and **Tracking URL** are saved to the fulfillment in Medusa.
|
|
142
133
|
|
|
143
|
-
|
|
134
|
+
## 🐛 Troubleshooting
|
|
144
135
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
| `password` | string | ✅ | - | Your Shiprocket account password |
|
|
149
|
-
| `pickup_location` | string | ✅ | - | The Shiprocket pickup location name (must match one created in Shiprocket dashboard) |
|
|
136
|
+
### "Rate calculation failed"
|
|
137
|
+
- Ensure both the **Store Address** (Pickup) and **Customer Address** (Delivery) have valid 6-digit Indian pincodes.
|
|
138
|
+
- Check that the `weight` is set on your Product Variants (in grams or per your Shiprocket config). Shiprocket requires weight to calculate rates.
|
|
150
139
|
|
|
151
|
-
###
|
|
140
|
+
### "Authentication failed"
|
|
141
|
+
- Double-check your `SHIPROCKET_EMAIL` and `SHIPROCKET_PASSWORD` in `.env`.
|
|
142
|
+
- The plugin auto-refreshes tokens, but invalid credentials will block this.
|
|
152
143
|
|
|
153
|
-
|
|
144
|
+
## 🤝 Contributing
|
|
154
145
|
|
|
155
|
-
|
|
156
|
-
2. Select your target region - India (or any region you want Shiprocket to serve).
|
|
157
|
-
3. In **Fulfillment Providers**, select `shiprocket`.
|
|
158
|
-
4. Click **Save Changes**.
|
|
146
|
+
Contributions are welcome! If you find a bug or want to add a feature:
|
|
159
147
|
|
|
160
|
-
|
|
148
|
+
1. Fork the repository.
|
|
149
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`).
|
|
150
|
+
3. Commit your changes.
|
|
151
|
+
4. Open a Pull Request.
|
|
161
152
|
|
|
162
|
-
|
|
153
|
+
## 📄 License
|
|
163
154
|
|
|
164
|
-
|
|
165
|
-
2. Ensure you have:
|
|
166
|
-
- **Email** and **Password** of your Shiprocket account.
|
|
167
|
-
- At least one **Pickup Location** set up (e.g., `Primary`).
|
|
168
|
-
3. Add credentials to your `.env` file:
|
|
169
|
-
|
|
170
|
-
### 🔧 API Reference
|
|
171
|
-
|
|
172
|
-
This plugin implements the complete `AbstractFulfillmentProvider` interface:
|
|
173
|
-
|
|
174
|
-
#### Core Methods
|
|
175
|
-
|
|
176
|
-
- `createFulfillment()` - Create a fulfillment in Shiprocket.
|
|
177
|
-
- `cancelFulfillment()` - Cancel a fulfillment in Shiprocket.
|
|
178
|
-
- `getFulfillmentDocuments()` - Retrieve labels, manifests, and invoices for a fulfillment.
|
|
179
|
-
- `getTrackingInfo()` - Get tracking information for a shipment.
|
|
180
|
-
|
|
181
|
-
#### Utility Methods
|
|
182
|
-
|
|
183
|
-
- `calculateShippingRate()` - Calculate shipping rates for an order.
|
|
184
|
-
- `createReturn()` - Create a return shipment in Shiprocket.
|
|
185
|
-
- `generateLabel()` - Generate shipping label for a fulfillment.
|
|
186
|
-
- `generateInvoice()` - Generate invoice for a fulfillment.
|
|
187
|
-
|
|
188
|
-
### 🐛 Troubleshooting
|
|
189
|
-
|
|
190
|
-
**_Plugin not appearing in admin_**
|
|
191
|
-
|
|
192
|
-
- Follow the setup and reload the server.
|
|
193
|
-
|
|
194
|
-
**_Admin UI Widget not working_**
|
|
195
|
-
|
|
196
|
-
- Add the plugin to plugin import in medusa-config. reload the server.
|
|
197
|
-
|
|
198
|
-
### Getting Help
|
|
199
|
-
|
|
200
|
-
- 📖 [Shiprocket API Documentation](https://api.shiprocket.in/)
|
|
201
|
-
|
|
202
|
-
- 💬 [MedusaJS Discord](https://discord.gg/medusajs)
|
|
203
|
-
|
|
204
|
-
- 🐛 [Report Issues](https://github.com/SAM-AEL/medusa-shiprocket-fulfillment-plugin/issues)
|
|
205
|
-
|
|
206
|
-
### 🤝 Contributing
|
|
207
|
-
|
|
208
|
-
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
209
|
-
|
|
210
|
-
1. Fork the repository
|
|
211
|
-
|
|
212
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
213
|
-
|
|
214
|
-
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
215
|
-
|
|
216
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
217
|
-
|
|
218
|
-
5. Open a Pull Request
|
|
219
|
-
|
|
220
|
-
### 📄 License
|
|
221
|
-
|
|
222
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
223
|
-
|
|
224
|
-
### 🙏 Acknowledgments
|
|
225
|
-
|
|
226
|
-
- [MedusaJS](https://medusajs.com/) - for the best open-source e-commerce platform.
|
|
227
|
-
|
|
228
|
-
- [Shiprocket](https://www.shiprocket.in/) - for making the life of a shipper easier.
|
|
155
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
229
156
|
|
|
230
157
|
---
|
|
231
158
|
|
|
232
|
-
<
|
|
233
|
-
<
|
|
234
|
-
|
|
235
|
-
<br>
|
|
236
|
-
</h1>
|
|
159
|
+
<p align="center">
|
|
160
|
+
Built with ❤️ by <a href="https://github.com/SAM-AEL">SAM-AEL</a>
|
|
161
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusa-shiprocket-fulfillment-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Shiprocket Fulfillment Provider Plugin for MedusaJS 2",
|
|
5
5
|
"author": "SAM-AEL",
|
|
6
6
|
"homepage": "https://github.com/SAM-AEL",
|
|
@@ -15,7 +15,12 @@
|
|
|
15
15
|
"./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
16
16
|
"./modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
17
17
|
"./providers/*": "./.medusa/server/src/providers/*/index.js",
|
|
18
|
-
"./*": "./.medusa/server/src/*.js"
|
|
18
|
+
"./*": "./.medusa/server/src/*.js",
|
|
19
|
+
"./admin": {
|
|
20
|
+
"import": "./.medusa/server/src/admin/index.mjs",
|
|
21
|
+
"require": "./.medusa/server/src/admin/index.js",
|
|
22
|
+
"default": "./.medusa/server/src/admin/index.js"
|
|
23
|
+
}
|
|
19
24
|
},
|
|
20
25
|
"keywords": [
|
|
21
26
|
"medusa",
|
|
@@ -75,4 +80,4 @@
|
|
|
75
80
|
"engines": {
|
|
76
81
|
"node": ">=20"
|
|
77
82
|
}
|
|
78
|
-
}
|
|
83
|
+
}
|