@lodashventure/medusa-parcel-shipping 0.0.7 → 0.2.1
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/api/admin/documents/document-packing-slip-settings/route.js +62 -0
- package/.medusa/server/api/admin/documents/packing-slip/preview/route.js +47 -0
- package/.medusa/server/api/admin/documents/packing-slip/route.js +112 -0
- package/.medusa/server/api/admin/parcel-boxes/[id]/route.js +45 -0
- package/.medusa/server/api/admin/parcel-boxes/route.js +49 -0
- package/.medusa/server/api/admin/shipping-config/areas/[id]/route.js +42 -0
- package/.medusa/server/api/admin/shipping-config/areas/route.js +49 -0
- package/.medusa/server/api/admin/shipping-config/rates/[id]/route.js +82 -0
- package/.medusa/server/api/admin/shipping-config/rates/route.js +95 -0
- package/.medusa/server/api/shipping/distance/route.js +85 -0
- package/.medusa/server/api/shipping/distance/utils/zodTransform.js +20 -0
- package/.medusa/server/api/store/parcel-box-selector/route.js +55 -0
- package/.medusa/server/api/webhooks/tracking/route.js +48 -0
- package/.medusa/server/common/types.js +4 -0
- package/.medusa/server/common/utils/osrm-client.js +81 -0
- package/.medusa/server/common/utils/packing.js +379 -0
- package/.medusa/server/{src/modules/parcel-shipping/index.js → index.js} +9 -9
- package/.medusa/server/links/index.js +9 -0
- package/.medusa/server/links/packing-slip-order.js +13 -0
- package/.medusa/server/modules/documents/index.js +24 -0
- package/.medusa/server/modules/documents/models/document-invoice.js +20 -0
- package/.medusa/server/modules/documents/models/document-packing-slip-settings.js +29 -0
- package/.medusa/server/modules/documents/models/document-packing-slip.js +32 -0
- package/.medusa/server/modules/documents/models/document-settings.js +32 -0
- package/.medusa/server/modules/documents/models/index.js +15 -0
- package/.medusa/server/modules/documents/service.js +219 -0
- package/.medusa/server/modules/documents/services/generators/invoice-generator.js +73 -0
- package/.medusa/server/modules/documents/services/generators/packing-slip-generator.js +73 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/basic-logo.js +55 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/basic.js +52 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/customer-info.js +69 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header-for-logo.js +32 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header-logo.js +29 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header.js +35 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/hr.js +23 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/invoice-info.js +35 -0
- package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/table.js +97 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/basic.js +52 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +69 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +65 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +37 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header.js +37 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/hr.js +32 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +44 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +44 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +35 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info.js +36 -0
- package/.medusa/server/modules/documents/services/templates/packing-slips/basic/small.js +53 -0
- package/.medusa/server/modules/documents/types/api.js +14 -0
- package/.medusa/server/modules/documents/types/constants.js +17 -0
- package/.medusa/server/modules/documents/types/dto.js +14 -0
- package/.medusa/server/modules/documents/types/template-kind.js +25 -0
- package/.medusa/server/modules/documents/utils/currency.js +25 -0
- package/.medusa/server/providers/company-truck/index.js +10 -0
- package/.medusa/server/providers/company-truck/models/company-truck-rate.js +23 -0
- package/.medusa/server/{src → providers/company-truck/models}/index.js +4 -8
- package/.medusa/server/providers/company-truck/models/parcel-box.js +21 -0
- package/.medusa/server/providers/company-truck/models/service-area.js +20 -0
- package/.medusa/server/providers/company-truck/service.js +456 -0
- package/.medusa/server/{src/modules/parcel-shipping → providers/company-truck}/types.js +1 -1
- package/.medusa/server/providers/private-carrier/index.js +10 -0
- package/.medusa/server/providers/private-carrier/models/index.js +20 -0
- package/.medusa/server/providers/private-carrier/models/parcel-box.js +21 -0
- package/.medusa/server/providers/private-carrier/models/private-carrier-rate.js +23 -0
- package/.medusa/server/providers/private-carrier/models/service-area.js +20 -0
- package/.medusa/server/providers/private-carrier/service.js +392 -0
- package/.medusa/server/providers/private-carrier/types.js +3 -0
- package/.medusa/server/src/admin/index.js +3 -2
- package/.medusa/server/src/admin/index.mjs +3 -2
- package/.medusa/server/workflows/assign-packing-slip.js +31 -0
- package/.medusa/server/workflows/index.js +9 -0
- package/package.json +25 -34
- package/.medusa/server/src/api/admin/parcel-boxes/[id]/route.js +0 -47
- package/.medusa/server/src/api/admin/parcel-boxes/route.js +0 -48
- package/.medusa/server/src/api/admin/shipping-config/areas/[id]/route.js +0 -44
- package/.medusa/server/src/api/admin/shipping-config/areas/route.js +0 -48
- package/.medusa/server/src/api/admin/shipping-config/rates/[id]/route.js +0 -53
- package/.medusa/server/src/api/admin/shipping-config/rates/route.js +0 -55
- package/.medusa/server/src/api/store/parcel-box-selector/route.js +0 -53
- package/.medusa/server/src/modules/parcel-shipping/migrations/Migration20251015120000.js +0 -70
- package/.medusa/server/src/modules/parcel-shipping/models/parcel-box.js +0 -21
- package/.medusa/server/src/modules/parcel-shipping/models/service-area.js +0 -20
- package/.medusa/server/src/modules/parcel-shipping/models/shipping-rate.js +0 -20
- package/.medusa/server/src/modules/parcel-shipping/service.js +0 -172
- package/.medusa/server/src/modules/parcel-shipping/utils/packing.js +0 -319
- package/.medusa/server/src/providers/company-truck/index.js +0 -19
- package/.medusa/server/src/providers/parcel-fulfillment-base.js +0 -180
- package/.medusa/server/src/providers/private-carrier/index.js +0 -19
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
|
|
4
|
+
*
|
|
5
|
+
* MIT License
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
+
* See the License for the specific language governing permissions and
|
|
11
|
+
* limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.POST = exports.GET = void 0;
|
|
15
|
+
const documents_1 = require("../../../../modules/documents");
|
|
16
|
+
const GET = async (req, res) => {
|
|
17
|
+
const documentsModuleService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
18
|
+
try {
|
|
19
|
+
const lastDocumentPackingSlipSettings = await documentsModuleService.listDocumentPackingSlipSettings({}, {
|
|
20
|
+
order: {
|
|
21
|
+
created_at: "DESC"
|
|
22
|
+
},
|
|
23
|
+
take: 1
|
|
24
|
+
});
|
|
25
|
+
res.status(200).json({
|
|
26
|
+
settings: lastDocumentPackingSlipSettings && lastDocumentPackingSlipSettings.length ? lastDocumentPackingSlipSettings[0] : undefined
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
res.status(400).json({
|
|
31
|
+
message: e.message
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.GET = GET;
|
|
36
|
+
const POST = async (req, res) => {
|
|
37
|
+
const body = req.body;
|
|
38
|
+
const formatNumber = body.formatNumber;
|
|
39
|
+
const forcedNumber = body.forcedNumber;
|
|
40
|
+
const template = body.template;
|
|
41
|
+
const documentsModuleService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
42
|
+
try {
|
|
43
|
+
const newSettings = await documentsModuleService.updatePackingSlipSettings(formatNumber, forcedNumber, template);
|
|
44
|
+
if (newSettings !== undefined) {
|
|
45
|
+
res.status(201).json({
|
|
46
|
+
settings: newSettings
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
res.status(400).json({
|
|
51
|
+
message: 'Cant update invoice settings'
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
res.status(400).json({
|
|
57
|
+
message: e.message
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.POST = POST;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9kb2N1bWVudC1wYWNraW5nLXNsaXAtc2V0dGluZ3Mvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7OztBQU9ILDZEQUFnRTtBQUl6RCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFFRixNQUFNLHNCQUFzQixHQUEyQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFBO0lBRTFGLElBQUksQ0FBQztRQUNILE1BQU0sK0JBQStCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLEVBQUU7WUFDdkcsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxNQUFNO2FBQ25CO1lBQ0QsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUE7UUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixRQUFRLEVBQUUsK0JBQStCLElBQUksK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNySSxDQUFDLENBQUM7SUFFTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztTQUNuQixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBdkJZLFFBQUEsR0FBRyxPQXVCZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUVGLE1BQU0sSUFBSSxHQUFRLEdBQUcsQ0FBQyxJQUFXLENBQUM7SUFDbEMsTUFBTSxZQUFZLEdBQXVCLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxZQUFZLEdBQXVCLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxRQUFRLEdBQXVCLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDbkQsTUFBTSxzQkFBc0IsR0FBMkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQTtJQUUxRixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBbUMsQ0FBQyxDQUFBO1FBQzNJLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixRQUFRLEVBQUUsV0FBVzthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsOEJBQThCO2FBQ3hDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFHSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztTQUNyQixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBN0JZLFFBQUEsSUFBSSxRQTZCaEIifQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
|
|
4
|
+
*
|
|
5
|
+
* MIT License
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
+
* See the License for the specific language governing permissions and
|
|
11
|
+
* limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.GET = void 0;
|
|
15
|
+
const utils_1 = require("@medusajs/utils");
|
|
16
|
+
const documents_1 = require("../../../../../modules/documents");
|
|
17
|
+
const utils_2 = require("@medusajs/framework/utils");
|
|
18
|
+
const GET = async (req, res) => {
|
|
19
|
+
const documentsModuleService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
20
|
+
const orderModuleService = req.scope.resolve(utils_2.Modules.ORDER);
|
|
21
|
+
const lastOrders = await orderModuleService.listOrders({}, {
|
|
22
|
+
order: {
|
|
23
|
+
created_at: "DESC"
|
|
24
|
+
},
|
|
25
|
+
take: 1,
|
|
26
|
+
select: ['*', 'item_total', 'shipping_total', 'tax_total'],
|
|
27
|
+
relations: ['shipping_address', 'billing_address', 'items']
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
if (lastOrders && lastOrders.length) {
|
|
31
|
+
const rawRequest = req;
|
|
32
|
+
const templateKind = rawRequest.query.template;
|
|
33
|
+
const result = await documentsModuleService.generateTestPackingSlip(lastOrders[0], templateKind);
|
|
34
|
+
res.status(201).json(result);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'You need to have at least one order to see preview');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
res.status(400).json({
|
|
42
|
+
message: e.message
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.GET = GET;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9wYWNraW5nLXNsaXAvcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7O0FBTUgsMkNBQTZDO0FBRzdDLGdFQUFtRTtBQUVuRSxxREFBb0Q7QUFFN0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNuQixFQUFFO0lBRUYsTUFBTSxzQkFBc0IsR0FBMkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQTtJQUUxRixNQUFNLGtCQUFrQixHQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEUsZUFBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQWUsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFO1FBQ3JFLEtBQUssRUFBRTtZQUNMLFVBQVUsRUFBRSxNQUFNO1NBQ25CO1FBQ0QsSUFBSSxFQUFFLENBQUM7UUFDUCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQztRQUMxRCxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUM7S0FDNUQsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLEdBQXFCLENBQUM7WUFDekMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBdUMsQ0FBQyxDQUFBO1lBQzNILEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0RBQW9ELENBQ3JELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87U0FDckIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQXBDWSxRQUFBLEdBQUcsT0FvQ2YifQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
|
|
4
|
+
*
|
|
5
|
+
* MIT License
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
+
* See the License for the specific language governing permissions and
|
|
11
|
+
* limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.GET = exports.POST = void 0;
|
|
18
|
+
const utils_1 = require("@medusajs/utils");
|
|
19
|
+
const documents_1 = require("../../../../modules/documents");
|
|
20
|
+
const utils_2 = require("@medusajs/framework/utils");
|
|
21
|
+
const utils_3 = require("@medusajs/framework/utils");
|
|
22
|
+
const assign_packing_slip_1 = __importDefault(require("./../../../../workflows/assign-packing-slip"));
|
|
23
|
+
const POST = async (req, res) => {
|
|
24
|
+
const documentsModuleService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
25
|
+
const orderModuleService = req.scope.resolve(utils_2.Modules.ORDER);
|
|
26
|
+
try {
|
|
27
|
+
const body = req.body;
|
|
28
|
+
const order = await orderModuleService.retrieveOrder(body.order_id, {
|
|
29
|
+
select: ['*', 'item_total', 'shipping_total', 'tax_total'],
|
|
30
|
+
relations: ['shipping_address', 'billing_address', 'items']
|
|
31
|
+
});
|
|
32
|
+
if (order) {
|
|
33
|
+
const result = await documentsModuleService.generatePackingSlipForOrder(order);
|
|
34
|
+
if (result.packingSlip) {
|
|
35
|
+
const query = req.scope.resolve(utils_3.ContainerRegistrationKeys.QUERY);
|
|
36
|
+
const { data: [orderWithPackingSlip], } = await query.graph({
|
|
37
|
+
entity: "order",
|
|
38
|
+
filters: {
|
|
39
|
+
id: [
|
|
40
|
+
order.id
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
fields: [
|
|
44
|
+
"document_packing_slip.*",
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
await (0, assign_packing_slip_1.default)(req.scope)
|
|
48
|
+
.run({
|
|
49
|
+
input: {
|
|
50
|
+
orderId: order.id,
|
|
51
|
+
newPackingSlipId: result.packingSlip.id,
|
|
52
|
+
oldPackingSlipId: orderWithPackingSlip.document_packing_slip ? orderWithPackingSlip.document_packing_slip.id : undefined
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
res.status(201).json(result);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Packing slip not generated');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Invalid order id');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
res.status(400).json({
|
|
67
|
+
message: e.message
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.POST = POST;
|
|
72
|
+
const GET = async (req, res) => {
|
|
73
|
+
const documentsModuleService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
74
|
+
const orderId = req.query.orderId;
|
|
75
|
+
const includeBuffer = req.query.includeBuffer;
|
|
76
|
+
try {
|
|
77
|
+
const query = req.scope.resolve(utils_3.ContainerRegistrationKeys.QUERY);
|
|
78
|
+
const { data: [orderWithPackingSlip], } = await query.graph({
|
|
79
|
+
entity: "order",
|
|
80
|
+
filters: {
|
|
81
|
+
id: [
|
|
82
|
+
orderId
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
fields: [
|
|
86
|
+
"document_packing_slip.*",
|
|
87
|
+
],
|
|
88
|
+
});
|
|
89
|
+
if (orderWithPackingSlip.document_packing_slip && orderId) {
|
|
90
|
+
const orderModuleService = req.scope.resolve(utils_2.Modules.ORDER);
|
|
91
|
+
const orderDto = await orderModuleService.retrieveOrder(orderId, {
|
|
92
|
+
select: ['*', 'item_total', 'shipping_total', 'tax_total'],
|
|
93
|
+
relations: ['shipping_address', 'billing_address', 'items']
|
|
94
|
+
});
|
|
95
|
+
const result = await documentsModuleService.getPackingSlip(orderDto, orderWithPackingSlip.document_packing_slip.id, includeBuffer !== undefined);
|
|
96
|
+
res.status(200).json(result);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const result = {
|
|
100
|
+
packingSlip: undefined
|
|
101
|
+
};
|
|
102
|
+
res.status(200).json(result);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
res.status(400).json({
|
|
107
|
+
message: e.message
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.GET = GET;
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9wYWNraW5nLXNsaXAvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7Ozs7OztBQU9ILDJDQUE2QztBQUU3Qyw2REFBZ0U7QUFDaEUscURBQW9EO0FBQ3BELHFEQUFzRTtBQUN0RSxzR0FBMEY7QUFHbkYsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFrQixFQUNsQixHQUFtQixFQUNuQixFQUFFO0lBRUYsTUFBTSxzQkFBc0IsR0FBMkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQTtJQUMxRixNQUFNLGtCQUFrQixHQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEUsZUFBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO0lBRUYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQVEsR0FBRyxDQUFDLElBQVcsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBYSxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO1lBQzFELFNBQVMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztTQUM1RCxDQUFDLENBQUE7UUFDRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM5RSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxD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
|
|
@@ -0,0 +1,45 @@
|
|
|
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 updateBoxSchema = zod_1.z.object({
|
|
7
|
+
name: zod_1.z.string().min(1).optional(),
|
|
8
|
+
width_cm: zod_1.z.number().positive().optional(),
|
|
9
|
+
length_cm: zod_1.z.number().positive().optional(),
|
|
10
|
+
height_cm: zod_1.z.number().positive().optional(),
|
|
11
|
+
max_weight_kg: zod_1.z.number().positive().optional(),
|
|
12
|
+
price_thb: zod_1.z.number().nonnegative().optional(),
|
|
13
|
+
active: zod_1.z.boolean().optional(),
|
|
14
|
+
});
|
|
15
|
+
async function PUT(req, res) {
|
|
16
|
+
const { id } = req.params;
|
|
17
|
+
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
18
|
+
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
19
|
+
const dataService = provider.getDataService();
|
|
20
|
+
try {
|
|
21
|
+
const payload = updateBoxSchema.parse(req.body);
|
|
22
|
+
const updated = await dataService.modifyParcelBox(id, payload);
|
|
23
|
+
dataService.invalidateCache(["boxes"]);
|
|
24
|
+
res.status(200).json({ box: updated });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof zod_1.ZodError) {
|
|
28
|
+
return res.status(400).json({
|
|
29
|
+
code: "invalid_payload",
|
|
30
|
+
issues: error.issues,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function DELETE(req, res) {
|
|
37
|
+
const { id } = req.params;
|
|
38
|
+
const fulfillmentService = req.scope.resolve("fulfillmentService");
|
|
39
|
+
const provider = (await fulfillmentService.retrieveProvider("company-truck"));
|
|
40
|
+
const dataService = provider.getDataService();
|
|
41
|
+
await dataService.removeParcelBox(id);
|
|
42
|
+
dataService.invalidateCache(["boxes"]);
|
|
43
|
+
res.status(204).send();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BhcmNlbC1ib3hlcy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0Esa0JBdUJDO0FBRUQsd0JBWUM7QUFsREQsNkJBQWtDO0FBR2xDLE1BQU0sZUFBZSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9DLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlDLE1BQU0sRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVJLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLGNBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxNQUFNLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNsRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLGtCQUFrQixHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUN6RCxlQUFlLENBQ2hCLENBQW9DLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRTlDLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV2QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pCLENBQUMifQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
|
@@ -0,0 +1,49 @@
|
|
|
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==
|
|
@@ -0,0 +1,82 @@
|
|
|
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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
|
|
@@ -0,0 +1,95 @@
|
|
|
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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
|