@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.
Files changed (88) hide show
  1. package/.medusa/server/api/admin/documents/document-packing-slip-settings/route.js +62 -0
  2. package/.medusa/server/api/admin/documents/packing-slip/preview/route.js +47 -0
  3. package/.medusa/server/api/admin/documents/packing-slip/route.js +112 -0
  4. package/.medusa/server/api/admin/parcel-boxes/[id]/route.js +45 -0
  5. package/.medusa/server/api/admin/parcel-boxes/route.js +49 -0
  6. package/.medusa/server/api/admin/shipping-config/areas/[id]/route.js +42 -0
  7. package/.medusa/server/api/admin/shipping-config/areas/route.js +49 -0
  8. package/.medusa/server/api/admin/shipping-config/rates/[id]/route.js +82 -0
  9. package/.medusa/server/api/admin/shipping-config/rates/route.js +95 -0
  10. package/.medusa/server/api/shipping/distance/route.js +85 -0
  11. package/.medusa/server/api/shipping/distance/utils/zodTransform.js +20 -0
  12. package/.medusa/server/api/store/parcel-box-selector/route.js +55 -0
  13. package/.medusa/server/api/webhooks/tracking/route.js +48 -0
  14. package/.medusa/server/common/types.js +4 -0
  15. package/.medusa/server/common/utils/osrm-client.js +81 -0
  16. package/.medusa/server/common/utils/packing.js +379 -0
  17. package/.medusa/server/{src/modules/parcel-shipping/index.js → index.js} +9 -9
  18. package/.medusa/server/links/index.js +9 -0
  19. package/.medusa/server/links/packing-slip-order.js +13 -0
  20. package/.medusa/server/modules/documents/index.js +24 -0
  21. package/.medusa/server/modules/documents/models/document-invoice.js +20 -0
  22. package/.medusa/server/modules/documents/models/document-packing-slip-settings.js +29 -0
  23. package/.medusa/server/modules/documents/models/document-packing-slip.js +32 -0
  24. package/.medusa/server/modules/documents/models/document-settings.js +32 -0
  25. package/.medusa/server/modules/documents/models/index.js +15 -0
  26. package/.medusa/server/modules/documents/service.js +219 -0
  27. package/.medusa/server/modules/documents/services/generators/invoice-generator.js +73 -0
  28. package/.medusa/server/modules/documents/services/generators/packing-slip-generator.js +73 -0
  29. package/.medusa/server/modules/documents/services/templates/invoices/basic/basic-logo.js +55 -0
  30. package/.medusa/server/modules/documents/services/templates/invoices/basic/basic.js +52 -0
  31. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/customer-info.js +69 -0
  32. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header-for-logo.js +32 -0
  33. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header-logo.js +29 -0
  34. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header.js +35 -0
  35. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/hr.js +23 -0
  36. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/invoice-info.js +35 -0
  37. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/table.js +97 -0
  38. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/basic.js +52 -0
  39. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +69 -0
  40. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +65 -0
  41. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +37 -0
  42. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header.js +37 -0
  43. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/hr.js +32 -0
  44. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +44 -0
  45. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +44 -0
  46. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +35 -0
  47. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info.js +36 -0
  48. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/small.js +53 -0
  49. package/.medusa/server/modules/documents/types/api.js +14 -0
  50. package/.medusa/server/modules/documents/types/constants.js +17 -0
  51. package/.medusa/server/modules/documents/types/dto.js +14 -0
  52. package/.medusa/server/modules/documents/types/template-kind.js +25 -0
  53. package/.medusa/server/modules/documents/utils/currency.js +25 -0
  54. package/.medusa/server/providers/company-truck/index.js +10 -0
  55. package/.medusa/server/providers/company-truck/models/company-truck-rate.js +23 -0
  56. package/.medusa/server/{src → providers/company-truck/models}/index.js +4 -8
  57. package/.medusa/server/providers/company-truck/models/parcel-box.js +21 -0
  58. package/.medusa/server/providers/company-truck/models/service-area.js +20 -0
  59. package/.medusa/server/providers/company-truck/service.js +456 -0
  60. package/.medusa/server/{src/modules/parcel-shipping → providers/company-truck}/types.js +1 -1
  61. package/.medusa/server/providers/private-carrier/index.js +10 -0
  62. package/.medusa/server/providers/private-carrier/models/index.js +20 -0
  63. package/.medusa/server/providers/private-carrier/models/parcel-box.js +21 -0
  64. package/.medusa/server/providers/private-carrier/models/private-carrier-rate.js +23 -0
  65. package/.medusa/server/providers/private-carrier/models/service-area.js +20 -0
  66. package/.medusa/server/providers/private-carrier/service.js +392 -0
  67. package/.medusa/server/providers/private-carrier/types.js +3 -0
  68. package/.medusa/server/src/admin/index.js +3 -2
  69. package/.medusa/server/src/admin/index.mjs +3 -2
  70. package/.medusa/server/workflows/assign-packing-slip.js +31 -0
  71. package/.medusa/server/workflows/index.js +9 -0
  72. package/package.json +25 -34
  73. package/.medusa/server/src/api/admin/parcel-boxes/[id]/route.js +0 -47
  74. package/.medusa/server/src/api/admin/parcel-boxes/route.js +0 -48
  75. package/.medusa/server/src/api/admin/shipping-config/areas/[id]/route.js +0 -44
  76. package/.medusa/server/src/api/admin/shipping-config/areas/route.js +0 -48
  77. package/.medusa/server/src/api/admin/shipping-config/rates/[id]/route.js +0 -53
  78. package/.medusa/server/src/api/admin/shipping-config/rates/route.js +0 -55
  79. package/.medusa/server/src/api/store/parcel-box-selector/route.js +0 -53
  80. package/.medusa/server/src/modules/parcel-shipping/migrations/Migration20251015120000.js +0 -70
  81. package/.medusa/server/src/modules/parcel-shipping/models/parcel-box.js +0 -21
  82. package/.medusa/server/src/modules/parcel-shipping/models/service-area.js +0 -20
  83. package/.medusa/server/src/modules/parcel-shipping/models/shipping-rate.js +0 -20
  84. package/.medusa/server/src/modules/parcel-shipping/service.js +0 -172
  85. package/.medusa/server/src/modules/parcel-shipping/utils/packing.js +0 -319
  86. package/.medusa/server/src/providers/company-truck/index.js +0 -19
  87. package/.medusa/server/src/providers/parcel-fulfillment-base.js +0 -180
  88. 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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