@lodashventure/medusa-parcel-shipping 0.2.11 → 0.2.18
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 +1794 -1289
- package/.medusa/server/src/admin/index.mjs +1797 -1292
- package/.medusa/server/src/api/admin/boxes/[id]/route.js +52 -0
- package/.medusa/server/src/api/admin/boxes/route.js +44 -0
- package/.medusa/server/src/api/admin/distance/route.js +75 -0
- package/.medusa/server/src/api/admin/documents/document-packing-slip-settings/route.js +65 -0
- package/.medusa/server/{api → src/api}/admin/documents/packing-slip/preview/route.js +1 -1
- package/.medusa/server/{api → src/api}/admin/documents/packing-slip/route.js +2 -2
- package/.medusa/server/src/api/admin/material-costs/[id]/route.js +51 -0
- package/.medusa/server/src/api/admin/material-costs/route.js +46 -0
- package/.medusa/server/src/api/admin/packaging-materials/[id]/route.js +50 -0
- package/.medusa/server/src/api/admin/packaging-materials/route.js +52 -0
- package/.medusa/server/src/api/admin/packing-policies/[id]/route.js +41 -0
- package/.medusa/server/src/api/admin/packing-policies/route.js +43 -0
- package/.medusa/server/src/api/admin/rates/[id]/route.js +8 -0
- package/.medusa/server/src/api/admin/rates/route.js +7 -0
- package/.medusa/server/src/api/admin/service-areas/[id]/route.js +36 -0
- package/.medusa/server/src/api/admin/service-areas/route.js +40 -0
- package/.medusa/server/src/api/admin/shipping-rates/[id]/route.js +48 -0
- package/.medusa/server/src/api/admin/shipping-rates/route.js +66 -0
- package/.medusa/server/src/api/store/distance/route.js +75 -0
- package/.medusa/server/src/api/store/quote/route.js +116 -0
- package/.medusa/server/{common → src/common}/types.js +1 -1
- package/.medusa/server/src/common/utils/distance-calculator.js +98 -0
- package/.medusa/server/src/common/utils/geocoding.js +125 -0
- package/.medusa/server/{common → src/common}/utils/osrm-client.js +1 -1
- package/.medusa/server/src/common/utils/packing.js +484 -0
- package/.medusa/server/src/index.js +38 -0
- package/.medusa/server/{links → src/links}/index.js +1 -1
- package/.medusa/server/{links → src/links}/packing-slip-order.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/index.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/models/document-invoice.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/models/document-packing-slip-settings.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/models/document-packing-slip.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/models/document-settings.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/models/index.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/service.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/generators/invoice-generator.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/generators/packing-slip-generator.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/basic-logo.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/basic.js +1 -1
- package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/customer-info.js +69 -0
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/header-for-logo.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/header-logo.js +1 -1
- package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/header.js +35 -0
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/hr.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/invoice-info.js +1 -1
- package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/table.js +97 -0
- package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/basic.js +1 -1
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +69 -0
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +65 -0
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +37 -0
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/header.js +37 -0
- package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/parts/hr.js +1 -1
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +44 -0
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +44 -0
- package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +35 -0
- package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/parts/table-order-info.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/small.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/types/api.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/types/constants.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/types/dto.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/types/template-kind.js +1 -1
- package/.medusa/server/{modules → src/modules}/documents/utils/currency.js +1 -1
- package/.medusa/server/src/modules/parcel-shipping/index.js +13 -0
- package/.medusa/server/src/modules/parcel-shipping/migrations/Migration20251023000000.js +37 -0
- package/.medusa/server/src/modules/parcel-shipping/models/index.js +16 -0
- package/.medusa/server/src/modules/parcel-shipping/models/material-cost.js +24 -0
- package/.medusa/server/src/modules/parcel-shipping/models/packaging-material.js +41 -0
- package/.medusa/server/src/modules/parcel-shipping/models/packing-policy.js +37 -0
- package/.medusa/server/src/modules/parcel-shipping/models/parcel-box.js +25 -0
- package/.medusa/server/src/modules/parcel-shipping/models/service-area.js +30 -0
- package/.medusa/server/src/modules/parcel-shipping/models/shipping-rate.js +50 -0
- package/.medusa/server/src/modules/parcel-shipping/service.js +485 -0
- package/.medusa/server/{providers → src/providers}/company-truck/index.js +1 -1
- package/.medusa/server/src/providers/company-truck/models/company-truck-rate.js +23 -0
- package/.medusa/server/{providers → src/providers}/company-truck/models/index.js +3 -2
- package/.medusa/server/src/providers/company-truck/models/material-cost.js +24 -0
- package/.medusa/server/src/providers/company-truck/models/parcel-box.js +21 -0
- package/.medusa/server/src/providers/company-truck/models/service-area.js +20 -0
- package/.medusa/server/src/providers/company-truck/service.js +456 -0
- package/.medusa/server/{providers → src/providers}/company-truck/types.js +1 -1
- package/.medusa/server/src/providers/index.js +8 -0
- package/.medusa/server/src/providers/parcel-fulfillment.js +378 -0
- package/.medusa/server/{providers → src/providers}/private-carrier/index.js +1 -1
- package/.medusa/server/{providers → src/providers}/private-carrier/models/index.js +1 -1
- package/.medusa/server/src/providers/private-carrier/models/parcel-box.js +21 -0
- package/.medusa/server/src/providers/private-carrier/models/private-carrier-rate.js +23 -0
- package/.medusa/server/src/providers/private-carrier/models/service-area.js +20 -0
- package/.medusa/server/src/providers/private-carrier/service.js +392 -0
- package/.medusa/server/{providers → src/providers}/private-carrier/types.js +1 -1
- package/.medusa/server/src/types/index.js +11 -0
- package/.medusa/server/src/utils/packing.js +386 -0
- package/.medusa/server/src/workflows/assign-packing-slip.js +35 -0
- package/.medusa/server/{workflows → src/workflows}/index.js +1 -1
- package/package.json +21 -11
- package/.medusa/server/api/admin/documents/document-packing-slip-settings/route.js +0 -62
- package/.medusa/server/api/admin/parcel-boxes/[id]/route.js +0 -45
- package/.medusa/server/api/admin/parcel-boxes/route.js +0 -49
- package/.medusa/server/api/admin/shipping-config/areas/[id]/route.js +0 -42
- package/.medusa/server/api/admin/shipping-config/areas/route.js +0 -49
- package/.medusa/server/api/admin/shipping-config/rates/[id]/route.js +0 -82
- package/.medusa/server/api/admin/shipping-config/rates/route.js +0 -95
- package/.medusa/server/api/shipping/distance/route.js +0 -85
- package/.medusa/server/api/shipping/distance/utils/zodTransform.js +0 -20
- package/.medusa/server/api/store/parcel-box-selector/route.js +0 -55
- package/.medusa/server/api/webhooks/tracking/route.js +0 -48
- package/.medusa/server/common/utils/packing.js +0 -379
- package/.medusa/server/index.js +0 -28
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/customer-info.js +0 -69
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header.js +0 -35
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/table.js +0 -97
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +0 -69
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +0 -65
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +0 -37
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header.js +0 -37
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +0 -44
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +0 -44
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +0 -35
- package/.medusa/server/providers/company-truck/models/company-truck-rate.js +0 -23
- package/.medusa/server/providers/company-truck/models/parcel-box.js +0 -21
- package/.medusa/server/providers/company-truck/models/service-area.js +0 -20
- package/.medusa/server/providers/company-truck/service.js +0 -456
- package/.medusa/server/providers/private-carrier/models/parcel-box.js +0 -21
- package/.medusa/server/providers/private-carrier/models/private-carrier-rate.js +0 -23
- package/.medusa/server/providers/private-carrier/models/service-area.js +0 -20
- package/.medusa/server/providers/private-carrier/service.js +0 -392
- package/.medusa/server/workflows/assign-packing-slip.js +0 -31
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GET = GET;
|
|
4
|
-
exports.POST = POST;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const createBoxSchema = zod_1.z.object({
|
|
7
|
-
name: zod_1.z.string().min(1),
|
|
8
|
-
width_cm: zod_1.z.number().positive(),
|
|
9
|
-
length_cm: zod_1.z.number().positive(),
|
|
10
|
-
height_cm: zod_1.z.number().positive(),
|
|
11
|
-
max_weight_kg: zod_1.z.number().positive(),
|
|
12
|
-
price_thb: zod_1.z.number().nonnegative(),
|
|
13
|
-
active: zod_1.z.boolean().optional().default(true),
|
|
14
|
-
});
|
|
15
|
-
async function GET(req, res) {
|
|
16
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
17
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
18
|
-
const dataService = provider.getDataService();
|
|
19
|
-
const filters = {};
|
|
20
|
-
const { active } = req.query;
|
|
21
|
-
if (typeof active === "string") {
|
|
22
|
-
filters.active = active === "true";
|
|
23
|
-
}
|
|
24
|
-
const boxes = await dataService.findParcelBoxes(filters, {
|
|
25
|
-
order: { name: "ASC" },
|
|
26
|
-
});
|
|
27
|
-
res.status(200).json({ boxes });
|
|
28
|
-
}
|
|
29
|
-
async function POST(req, res) {
|
|
30
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
31
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
32
|
-
const dataService = provider.getDataService();
|
|
33
|
-
try {
|
|
34
|
-
const payload = createBoxSchema.parse(req.body);
|
|
35
|
-
const created = await dataService.saveParcelBoxes([payload]);
|
|
36
|
-
dataService.invalidateCache(["boxes"]);
|
|
37
|
-
res.status(201).json({ box: created[0] });
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
if (error instanceof zod_1.ZodError) {
|
|
41
|
-
return res.status(400).json({
|
|
42
|
-
code: "invalid_payload",
|
|
43
|
-
issues: error.issues,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BhcmNlbC1ib3hlcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLGtCQW1CQztBQUVELG9CQXNCQztBQXhERCw2QkFBa0M7QUFHbEMsTUFBTSxlQUFlLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsYUFBYSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDbkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0NBQzdDLENBQUMsQ0FBQztBQUVJLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDNUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFFN0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUU7UUFDdkQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtLQUN2QixDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0QsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLGNBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PUT = PUT;
|
|
4
|
-
exports.DELETE = DELETE;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const kindEnum = zod_1.z.enum(["PROVINCE", "POSTCODE_PREFIX"]);
|
|
7
|
-
const updateAreaSchema = zod_1.z.object({
|
|
8
|
-
kind: kindEnum.optional(),
|
|
9
|
-
value: zod_1.z.string().min(1).optional(),
|
|
10
|
-
active: zod_1.z.boolean().optional(),
|
|
11
|
-
});
|
|
12
|
-
async function PUT(req, res) {
|
|
13
|
-
const { id } = req.params;
|
|
14
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
15
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
16
|
-
const dataService = provider.getDataService();
|
|
17
|
-
try {
|
|
18
|
-
const payload = updateAreaSchema.parse(req.body);
|
|
19
|
-
const updated = await dataService.modifyServiceArea(id, payload);
|
|
20
|
-
dataService.invalidateCache(["areas"]);
|
|
21
|
-
res.status(200).json({ area: updated });
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
if (error instanceof zod_1.ZodError) {
|
|
25
|
-
return res.status(400).json({
|
|
26
|
-
code: "invalid_payload",
|
|
27
|
-
issues: error.issues,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
throw error;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async function DELETE(req, res) {
|
|
34
|
-
const { id } = req.params;
|
|
35
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
36
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
37
|
-
const dataService = provider.getDataService();
|
|
38
|
-
await dataService.removeServiceArea(id);
|
|
39
|
-
dataService.invalidateCache(["areas"]);
|
|
40
|
-
res.status(204).send();
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nLWNvbmZpZy9hcmVhcy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsa0JBdUJDO0FBRUQsd0JBWUM7QUFoREQsNkJBQWtDO0FBR2xDLE1BQU0sUUFBUSxHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBRXpELE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRTtJQUN6QixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDL0IsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLE1BQU0sa0JBQWtCLEdBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsZ0JBQWdCLENBQ3pELGVBQWUsQ0FDaEIsQ0FBb0MsQ0FBQztJQUN0QyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFOUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLGNBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxNQUFNLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNsRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLE1BQU0sV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXZDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekIsQ0FBQyJ9
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GET = GET;
|
|
4
|
-
exports.POST = POST;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const kindEnum = zod_1.z.enum(["PROVINCE", "POSTCODE_PREFIX"]);
|
|
7
|
-
const createAreaSchema = zod_1.z.object({
|
|
8
|
-
kind: kindEnum,
|
|
9
|
-
value: zod_1.z.string().min(1),
|
|
10
|
-
active: zod_1.z.boolean().optional().default(true),
|
|
11
|
-
});
|
|
12
|
-
async function GET(req, res) {
|
|
13
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
14
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
15
|
-
const dataService = provider.getDataService();
|
|
16
|
-
const filters = {};
|
|
17
|
-
const { kind, active } = req.query;
|
|
18
|
-
if (typeof kind === "string" && kindEnum.safeParse(kind).success) {
|
|
19
|
-
filters.kind = kind;
|
|
20
|
-
}
|
|
21
|
-
if (typeof active === "string") {
|
|
22
|
-
filters.active = active === "true";
|
|
23
|
-
}
|
|
24
|
-
const areas = await dataService.findServiceAreas(filters, {
|
|
25
|
-
order: { kind: "ASC", value: "ASC" },
|
|
26
|
-
});
|
|
27
|
-
res.status(200).json({ areas });
|
|
28
|
-
}
|
|
29
|
-
async function POST(req, res) {
|
|
30
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
31
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
32
|
-
const dataService = provider.getDataService();
|
|
33
|
-
try {
|
|
34
|
-
const payload = createAreaSchema.parse(req.body);
|
|
35
|
-
const created = await dataService.saveServiceAreas([payload]);
|
|
36
|
-
dataService.invalidateCache(["areas"]);
|
|
37
|
-
res.status(201).json({ area: created[0] });
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
if (error instanceof zod_1.ZodError) {
|
|
41
|
-
return res.status(400).json({
|
|
42
|
-
code: "invalid_payload",
|
|
43
|
-
issues: error.issues,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nLWNvbmZpZy9hcmVhcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLGtCQXVCQztBQUVELG9CQXNCQztBQTFERCw2QkFBa0M7QUFHbEMsTUFBTSxRQUFRLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFFekQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztDQUM3QyxDQUFDLENBQUM7QUFFSSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxrQkFBa0IsR0FBUSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDekQsZUFBZSxDQUNoQixDQUFvQyxDQUFDO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUU5QyxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO0lBQzVDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUVuQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO1FBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtLQUNyQyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzlELFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXZDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxjQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PUT = PUT;
|
|
4
|
-
exports.DELETE = DELETE;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
-
const carrierEnum = zod_1.z.enum(["COMPANY_TRUCK", "PRIVATE_CARRIER"]);
|
|
8
|
-
const updateRateSchema = zod_1.z.object({
|
|
9
|
-
carrier: carrierEnum,
|
|
10
|
-
min_weight_kg: zod_1.z.number().nonnegative().optional(),
|
|
11
|
-
max_weight_kg: zod_1.z.number().positive().optional(),
|
|
12
|
-
price_thb: zod_1.z.number().nonnegative().optional(),
|
|
13
|
-
base_price_thb: zod_1.z.number().nonnegative().optional(),
|
|
14
|
-
price_per_km_thb: zod_1.z.number().nonnegative().optional(),
|
|
15
|
-
use_distance_pricing: zod_1.z.boolean().optional(),
|
|
16
|
-
currency: zod_1.z.string().min(1).optional(),
|
|
17
|
-
active: zod_1.z.boolean().optional(),
|
|
18
|
-
});
|
|
19
|
-
async function PUT(req, res) {
|
|
20
|
-
const { id } = req.params;
|
|
21
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
22
|
-
try {
|
|
23
|
-
const payload = updateRateSchema.parse(req.body);
|
|
24
|
-
if (payload.max_weight_kg !== undefined &&
|
|
25
|
-
payload.min_weight_kg !== undefined &&
|
|
26
|
-
payload.max_weight_kg <= payload.min_weight_kg) {
|
|
27
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "max_weight_kg must be greater than min_weight_kg");
|
|
28
|
-
}
|
|
29
|
-
let updated;
|
|
30
|
-
if (payload.carrier === "COMPANY_TRUCK") {
|
|
31
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
32
|
-
const dataService = provider.getDataService();
|
|
33
|
-
const { carrier, ...rateData } = payload;
|
|
34
|
-
updated = await dataService.modifyCompanyTruckRate(id, rateData);
|
|
35
|
-
dataService.invalidateCache(["rates"]);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
const provider = (await fulfillmentService.retrieveProvider("private-carrier"));
|
|
39
|
-
const dataService = provider.getDataService();
|
|
40
|
-
const { carrier, ...rateData } = payload;
|
|
41
|
-
updated = await dataService.modifyPrivateCarrierRate(id, rateData);
|
|
42
|
-
dataService.invalidateCache(["rates"]);
|
|
43
|
-
}
|
|
44
|
-
res.status(200).json({ rate: { ...updated, carrier: payload.carrier } });
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
if (error instanceof zod_1.ZodError) {
|
|
48
|
-
return res.status(400).json({
|
|
49
|
-
code: "invalid_payload",
|
|
50
|
-
issues: error.issues,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async function DELETE(req, res) {
|
|
57
|
-
const { id } = req.params;
|
|
58
|
-
const { carrier } = req.query;
|
|
59
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
60
|
-
try {
|
|
61
|
-
if (carrier === "COMPANY_TRUCK") {
|
|
62
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
63
|
-
const dataService = provider.getDataService();
|
|
64
|
-
await dataService.removeCompanyTruckRate(id);
|
|
65
|
-
dataService.invalidateCache(["rates"]);
|
|
66
|
-
}
|
|
67
|
-
else if (carrier === "PRIVATE_CARRIER") {
|
|
68
|
-
const provider = (await fulfillmentService.retrieveProvider("private-carrier"));
|
|
69
|
-
const dataService = provider.getDataService();
|
|
70
|
-
await dataService.removePrivateCarrierRate(id);
|
|
71
|
-
dataService.invalidateCache(["rates"]);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "carrier query parameter is required (COMPANY_TRUCK or PRIVATE_CARRIER)");
|
|
75
|
-
}
|
|
76
|
-
res.status(204).send();
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nLWNvbmZpZy9yYXRlcy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLGtCQWtEQztBQUVELHdCQWlDQztBQXhHRCw2QkFBa0M7QUFDbEMscURBQXdEO0FBSXhELE1BQU0sV0FBVyxHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxPQUFPLEVBQUUsV0FBVztJQUNwQixhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsRCxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMvQyxTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QyxjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuRCxnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JELG9CQUFvQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3RDLE1BQU0sRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVJLEtBQUssVUFBVSxHQUFHLENB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
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GET = GET;
|
|
4
|
-
exports.POST = POST;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
-
const carrierEnum = zod_1.z.enum(["COMPANY_TRUCK", "PRIVATE_CARRIER"]);
|
|
8
|
-
const createRateSchema = zod_1.z.object({
|
|
9
|
-
carrier: carrierEnum,
|
|
10
|
-
min_weight_kg: zod_1.z.number().nonnegative().default(0),
|
|
11
|
-
max_weight_kg: zod_1.z.number().positive(),
|
|
12
|
-
price_thb: zod_1.z.number().nonnegative(),
|
|
13
|
-
base_price_thb: zod_1.z.number().nonnegative().optional(),
|
|
14
|
-
price_per_km_thb: zod_1.z.number().nonnegative().optional(),
|
|
15
|
-
use_distance_pricing: zod_1.z.boolean().optional().default(false),
|
|
16
|
-
currency: zod_1.z.string().min(1).default("THB"),
|
|
17
|
-
active: zod_1.z.boolean().optional().default(true),
|
|
18
|
-
});
|
|
19
|
-
async function GET(req, res) {
|
|
20
|
-
const { carrier, active } = req.query;
|
|
21
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
22
|
-
try {
|
|
23
|
-
let rates = [];
|
|
24
|
-
if (!carrier || carrier === "COMPANY_TRUCK") {
|
|
25
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
26
|
-
const dataService = provider.getDataService();
|
|
27
|
-
const filters = {};
|
|
28
|
-
if (typeof active === "string") {
|
|
29
|
-
filters.active = active === "true";
|
|
30
|
-
}
|
|
31
|
-
const ctRates = await dataService.findCompanyTruckRates(filters, {
|
|
32
|
-
order: { max_weight_kg: "ASC" },
|
|
33
|
-
});
|
|
34
|
-
rates.push(...ctRates.map((r) => ({ ...r, carrier: "COMPANY_TRUCK" })));
|
|
35
|
-
}
|
|
36
|
-
if (!carrier || carrier === "PRIVATE_CARRIER") {
|
|
37
|
-
const provider = (await fulfillmentService.retrieveProvider("private-carrier"));
|
|
38
|
-
const dataService = provider.getDataService();
|
|
39
|
-
const filters = {};
|
|
40
|
-
if (typeof active === "string") {
|
|
41
|
-
filters.active = active === "true";
|
|
42
|
-
}
|
|
43
|
-
const pcRates = await dataService.findPrivateCarrierRates(filters, {
|
|
44
|
-
order: { max_weight_kg: "ASC" },
|
|
45
|
-
});
|
|
46
|
-
rates.push(...pcRates.map((r) => ({ ...r, carrier: "PRIVATE_CARRIER" })));
|
|
47
|
-
}
|
|
48
|
-
// Sort by carrier, then by weight
|
|
49
|
-
rates.sort((a, b) => {
|
|
50
|
-
if (a.carrier !== b.carrier) {
|
|
51
|
-
return a.carrier.localeCompare(b.carrier);
|
|
52
|
-
}
|
|
53
|
-
return a.max_weight_kg - b.max_weight_kg;
|
|
54
|
-
});
|
|
55
|
-
res.status(200).json({ rates });
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
async function POST(req, res) {
|
|
62
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
63
|
-
try {
|
|
64
|
-
const payload = createRateSchema.parse(req.body);
|
|
65
|
-
if (payload.max_weight_kg <= payload.min_weight_kg) {
|
|
66
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "max_weight_kg must be greater than min_weight_kg");
|
|
67
|
-
}
|
|
68
|
-
let created;
|
|
69
|
-
if (payload.carrier === "COMPANY_TRUCK") {
|
|
70
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
71
|
-
const dataService = provider.getDataService();
|
|
72
|
-
const { carrier, ...rateData } = payload;
|
|
73
|
-
created = await dataService.saveCompanyTruckRates([rateData]);
|
|
74
|
-
dataService.invalidateCache(["rates"]);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const provider = (await fulfillmentService.retrieveProvider("private-carrier"));
|
|
78
|
-
const dataService = provider.getDataService();
|
|
79
|
-
const { carrier, ...rateData } = payload;
|
|
80
|
-
created = await dataService.savePrivateCarrierRates([rateData]);
|
|
81
|
-
dataService.invalidateCache(["rates"]);
|
|
82
|
-
}
|
|
83
|
-
res.status(201).json({ rate: { ...created[0], carrier: payload.carrier } });
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
if (error instanceof zod_1.ZodError) {
|
|
87
|
-
return res.status(400).json({
|
|
88
|
-
code: "invalid_payload",
|
|
89
|
-
issues: error.issues,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nLWNvbmZpZy9yYXRlcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW9CQSxrQkFxREM7QUFFRCxvQkE2Q0M7QUF2SEQsNkJBQWtDO0FBR2xDLHFEQUF3RDtBQUV4RCxNQUFNLFdBQVcsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUVqRSxNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsT0FBTyxFQUFFLFdBQVc7SUFDcEIsYUFBYSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xELGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ25DLGNBQWMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25ELGdCQUFnQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckQsb0JBQW9CLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDM0QsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMxQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Q0FDN0Ms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
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.GET = void 0;
|
|
7
|
-
const zod_1 = __importDefault(require("zod"));
|
|
8
|
-
const zodTransform_1 = require("./utils/zodTransform");
|
|
9
|
-
const querySchema = zod_1.default.object({
|
|
10
|
-
origin: zod_1.default.string().transform(zodTransform_1.zodTransformStringToLatLng),
|
|
11
|
-
destination: zod_1.default.string().transform(zodTransform_1.zodTransformStringToLatLng),
|
|
12
|
-
weight: zod_1.default.coerce.number().positive(),
|
|
13
|
-
province: zod_1.default.string().optional(),
|
|
14
|
-
postcode: zod_1.default.string().optional(),
|
|
15
|
-
});
|
|
16
|
-
const GET = async (req, res) => {
|
|
17
|
-
const queryValidationResult = querySchema.safeParse(req.query);
|
|
18
|
-
if (!queryValidationResult.success) {
|
|
19
|
-
return res.status(400).json({
|
|
20
|
-
error: "validation_error",
|
|
21
|
-
message: "Invalid query parameters",
|
|
22
|
-
details: JSON.parse(queryValidationResult.error.message),
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const { origin, destination, weight, province, postcode } = queryValidationResult.data;
|
|
27
|
-
// Convert lat/lng strings to tuples
|
|
28
|
-
const originLatLng = [
|
|
29
|
-
parseFloat(origin[0]),
|
|
30
|
-
parseFloat(origin[1]),
|
|
31
|
-
];
|
|
32
|
-
const destinationLatLng = [
|
|
33
|
-
parseFloat(destination[0]),
|
|
34
|
-
parseFloat(destination[1]),
|
|
35
|
-
];
|
|
36
|
-
// Prepare address for carrier selection
|
|
37
|
-
const address = {
|
|
38
|
-
province: province || "",
|
|
39
|
-
postcode: postcode || "",
|
|
40
|
-
country: "TH",
|
|
41
|
-
};
|
|
42
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
43
|
-
// Try company truck first (in service area)
|
|
44
|
-
try {
|
|
45
|
-
const companyTruckProvider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
46
|
-
const result = await companyTruckProvider.quoteShippingWithDistance(originLatLng, destinationLatLng, address, weight);
|
|
47
|
-
res.json({
|
|
48
|
-
distance_km: result.distance_km,
|
|
49
|
-
carrier: result.method,
|
|
50
|
-
service_area: result.area,
|
|
51
|
-
weight_kg: result.weightKg,
|
|
52
|
-
shipping_cost: result.price,
|
|
53
|
-
currency: result.currency,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch (companyTruckError) {
|
|
57
|
-
// If company truck fails (out of service area), try private carrier
|
|
58
|
-
if (companyTruckError.message ===
|
|
59
|
-
"Address is not in company truck service area") {
|
|
60
|
-
const privateCarrierProvider = (await fulfillmentService.retrieveProvider("private-carrier"));
|
|
61
|
-
const result = await privateCarrierProvider.quoteShippingWithDistance(originLatLng, destinationLatLng, address, weight);
|
|
62
|
-
res.json({
|
|
63
|
-
distance_km: result.distance_km,
|
|
64
|
-
carrier: result.method,
|
|
65
|
-
service_area: result.area,
|
|
66
|
-
weight_kg: result.weightKg,
|
|
67
|
-
shipping_cost: result.price,
|
|
68
|
-
currency: result.currency,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
throw companyTruckError;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
console.error("[shipping/distance] Error:", error);
|
|
78
|
-
res.status(error.type === "not_allowed" ? 400 : 500).json({
|
|
79
|
-
error: error.code || "shipping_calculation_error",
|
|
80
|
-
message: error.message || "Unable to calculate shipping cost",
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
exports.GET = GET;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3NoaXBwaW5nL2Rpc3RhbmNlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDhDQUFvQjtBQUNwQix1REFBa0U7QUFJbEUsTUFBTSxXQUFXLEdBQUcsYUFBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQixNQUFNLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyx5Q0FBMEIsQ0FBQztJQUN4RCxXQUFXLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyx5Q0FBMEIsQ0FBQztJQUM3RCxNQUFNLEVBQUUsYUFBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsUUFBUSxFQUFFLGFBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsUUFBUSxFQUFFLGFBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDaEMsQ0FBQyxDQUFDO0FBRUksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0s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
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.zodTransformStringToLatLng = void 0;
|
|
7
|
-
const zod_1 = __importDefault(require("zod"));
|
|
8
|
-
const zodTransformStringToLatLng = (latlng, ctx) => {
|
|
9
|
-
const values = latlng.split(",");
|
|
10
|
-
if (values.length !== 2) {
|
|
11
|
-
ctx.addIssue({
|
|
12
|
-
code: zod_1.default.ZodIssueCode.custom,
|
|
13
|
-
message: `latlng should be formatted as "lat,lng"`,
|
|
14
|
-
});
|
|
15
|
-
return zod_1.default.NEVER;
|
|
16
|
-
}
|
|
17
|
-
return values;
|
|
18
|
-
};
|
|
19
|
-
exports.zodTransformStringToLatLng = zodTransformStringToLatLng;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kVHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9zaGlwcGluZy9kaXN0YW5jZS91dGlscy96b2RUcmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQW9CO0FBRWIsTUFBTSwwQkFBMEIsR0FBRyxDQUN4QyxNQUFjLEVBQ2QsR0FBb0IsRUFDcEIsRUFBRTtJQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWCxJQUFJLEVBQUUsYUFBQyxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQzNCLE9BQU8sRUFBRSx5Q0FBeUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFkVyxRQUFBLDBCQUEwQiw4QkFjckMifQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.POST = POST;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
-
const itemSchema = zod_1.z.object({
|
|
7
|
-
sku: zod_1.z.string().min(1),
|
|
8
|
-
width: zod_1.z.number().positive(),
|
|
9
|
-
length: zod_1.z.number().positive(),
|
|
10
|
-
height: zod_1.z.number().positive(),
|
|
11
|
-
weight: zod_1.z.number().nonnegative(),
|
|
12
|
-
quantity: zod_1.z.number().int().positive(),
|
|
13
|
-
attributes: zod_1.z
|
|
14
|
-
.object({
|
|
15
|
-
noStack: zod_1.z.boolean().optional(),
|
|
16
|
-
})
|
|
17
|
-
.optional(),
|
|
18
|
-
});
|
|
19
|
-
const bodySchema = zod_1.z.object({
|
|
20
|
-
items: zod_1.z.array(itemSchema).min(1),
|
|
21
|
-
shipping_address: zod_1.z.object({
|
|
22
|
-
province: zod_1.z.string().min(1),
|
|
23
|
-
postcode: zod_1.z.string().min(1),
|
|
24
|
-
country: zod_1.z.string().min(1),
|
|
25
|
-
}),
|
|
26
|
-
});
|
|
27
|
-
async function POST(req, res) {
|
|
28
|
-
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
29
|
-
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
30
|
-
try {
|
|
31
|
-
const payload = bodySchema.parse(req.body);
|
|
32
|
-
const result = await provider.quote(payload);
|
|
33
|
-
if (result.success) {
|
|
34
|
-
return res.status(200).json(result);
|
|
35
|
-
}
|
|
36
|
-
return res.status(200).json(result);
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
if (error instanceof zod_1.ZodError) {
|
|
40
|
-
return res.status(400).json({
|
|
41
|
-
code: "invalid_payload",
|
|
42
|
-
issues: error.issues,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
if (error instanceof utils_1.MedusaError) {
|
|
46
|
-
return res
|
|
47
|
-
.status(error.type === utils_1.MedusaError.Types.NOT_ALLOWED ? 403 : 400)
|
|
48
|
-
.json({
|
|
49
|
-
code: error.message,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3BhcmNlbC1ib3gtc2VsZWN0b3Ivcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsb0JBK0JDO0FBMURELDZCQUFrQztBQUNsQyxxREFBd0Q7QUFHeEQsTUFBTSxVQUFVLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQixHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEIsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDaEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsVUFBVSxFQUFFLE9BQUM7U0FDVixNQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUNoQyxDQUFDO1NBQ0QsUUFBUSxFQUFFO0NBQ2QsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQixLQUFLLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDekIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDM0IsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVJLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFFdEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxjQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEdBQUc7aUJBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztpQkFDaEUsSUFBSSxDQUFDO2dCQUNKLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTzthQUNwQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.POST = void 0;
|
|
4
|
-
const POST = async (req, res) => {
|
|
5
|
-
try {
|
|
6
|
-
const payload = req.body;
|
|
7
|
-
// TODO: Verify webhook signature if your carrier supports it
|
|
8
|
-
// const isValid = verifyWebhookSignature(payload.signature, req.headers);
|
|
9
|
-
// if (!isValid) {
|
|
10
|
-
// return res.status(401).json({ error: "Invalid signature" });
|
|
11
|
-
// }
|
|
12
|
-
// TODO: Update fulfillment status in database
|
|
13
|
-
// You can use Medusa's fulfillment service to update the fulfillment
|
|
14
|
-
// const fulfillmentService: any = req.scope.resolve("fulfillmentService");
|
|
15
|
-
// await fulfillmentService.updateFulfillmentStatus(
|
|
16
|
-
// payload.tracking_number,
|
|
17
|
-
// payload.status
|
|
18
|
-
// );
|
|
19
|
-
// Log the tracking update
|
|
20
|
-
console.log("[Tracking Webhook] Received update:", {
|
|
21
|
-
tracking_number: payload.tracking_number,
|
|
22
|
-
status: payload.status,
|
|
23
|
-
location: payload.location,
|
|
24
|
-
carrier: payload.carrier,
|
|
25
|
-
timestamp: payload.timestamp,
|
|
26
|
-
});
|
|
27
|
-
// TODO: Send customer notification about tracking update
|
|
28
|
-
// const notificationService = req.scope.resolve("notificationService");
|
|
29
|
-
// await notificationService.send({
|
|
30
|
-
// to: customer.email,
|
|
31
|
-
// template: "tracking-update",
|
|
32
|
-
// data: payload,
|
|
33
|
-
// });
|
|
34
|
-
res.status(200).json({
|
|
35
|
-
success: true,
|
|
36
|
-
message: "Tracking update received",
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
console.error("[Tracking Webhook] Error processing webhook:", error);
|
|
41
|
-
res.status(500).json({
|
|
42
|
-
error: "internal_error",
|
|
43
|
-
message: error.message,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
exports.POST = POST;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3dlYmhvb2tzL3RyYWNraW5nL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdDTyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQThCLENBQUM7UUFFbkQsNkRBQTZEO1FBQzdELDBFQUEwRTtRQUMxRSxrQkFBa0I7UUFDbEIsaUVBQWlFO1FBQ2pFLElBQUk7UUFFSiw4Q0FBOEM7UUFDOUMscUVBQXFFO1FBQ3JFLDJFQUEyRTtRQUMzRSxvREFBb0Q7UUFDcEQsNkJBQTZCO1FBQzdCLG1CQUFtQjtRQUNuQixLQUFLO1FBRUwsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUU7WUFDakQsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDMUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztTQUM3QixDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsd0VBQXdFO1FBQ3hFLG1DQUFtQztRQUNuQyx3QkFBd0I7UUFDeEIsaUNBQWlDO1FBQ2pDLG1CQUFtQjtRQUNuQixNQUFNO1FBRU4sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsMEJBQTBCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQztBQTlDVyxRQUFBLElBQUksUUE4Q2YifQ==
|