@lodashventure/medusa-parcel-shipping 0.2.13 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.medusa/server/src/admin/index.js +1787 -1278
  2. package/.medusa/server/src/admin/index.mjs +1790 -1279
  3. package/.medusa/server/src/api/admin/boxes/[id]/route.js +52 -0
  4. package/.medusa/server/src/api/admin/boxes/route.js +44 -0
  5. package/.medusa/server/src/api/admin/distance/route.js +75 -0
  6. package/.medusa/server/src/api/admin/documents/document-packing-slip-settings/route.js +65 -0
  7. package/.medusa/server/{api → src/api}/admin/documents/packing-slip/preview/route.js +1 -1
  8. package/.medusa/server/{api → src/api}/admin/documents/packing-slip/route.js +2 -2
  9. package/.medusa/server/src/api/admin/material-costs/[id]/route.js +51 -0
  10. package/.medusa/server/src/api/admin/material-costs/route.js +46 -0
  11. package/.medusa/server/src/api/admin/packaging-materials/[id]/route.js +50 -0
  12. package/.medusa/server/src/api/admin/packaging-materials/route.js +52 -0
  13. package/.medusa/server/src/api/admin/packing-policies/[id]/route.js +41 -0
  14. package/.medusa/server/src/api/admin/packing-policies/route.js +43 -0
  15. package/.medusa/server/src/api/admin/rates/[id]/route.js +8 -0
  16. package/.medusa/server/src/api/admin/rates/route.js +7 -0
  17. package/.medusa/server/src/api/admin/service-areas/[id]/route.js +36 -0
  18. package/.medusa/server/src/api/admin/service-areas/route.js +40 -0
  19. package/.medusa/server/src/api/admin/shipping-rates/[id]/route.js +48 -0
  20. package/.medusa/server/src/api/admin/shipping-rates/route.js +66 -0
  21. package/.medusa/server/src/api/store/distance/route.js +75 -0
  22. package/.medusa/server/src/api/store/quote/route.js +116 -0
  23. package/.medusa/server/{common → src/common}/types.js +1 -1
  24. package/.medusa/server/src/common/utils/distance-calculator.js +98 -0
  25. package/.medusa/server/src/common/utils/geocoding.js +125 -0
  26. package/.medusa/server/{common → src/common}/utils/osrm-client.js +1 -1
  27. package/.medusa/server/src/common/utils/packing.js +484 -0
  28. package/.medusa/server/src/index.js +38 -0
  29. package/.medusa/server/{links → src/links}/index.js +1 -1
  30. package/.medusa/server/{links → src/links}/packing-slip-order.js +1 -1
  31. package/.medusa/server/{modules → src/modules}/documents/index.js +1 -1
  32. package/.medusa/server/{modules → src/modules}/documents/models/document-invoice.js +1 -1
  33. package/.medusa/server/{modules → src/modules}/documents/models/document-packing-slip-settings.js +1 -1
  34. package/.medusa/server/{modules → src/modules}/documents/models/document-packing-slip.js +1 -1
  35. package/.medusa/server/{modules → src/modules}/documents/models/document-settings.js +1 -1
  36. package/.medusa/server/{modules → src/modules}/documents/models/index.js +1 -1
  37. package/.medusa/server/{modules → src/modules}/documents/service.js +1 -1
  38. package/.medusa/server/{modules → src/modules}/documents/services/generators/invoice-generator.js +1 -1
  39. package/.medusa/server/{modules → src/modules}/documents/services/generators/packing-slip-generator.js +1 -1
  40. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/basic-logo.js +1 -1
  41. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/basic.js +1 -1
  42. package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/customer-info.js +69 -0
  43. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/header-for-logo.js +1 -1
  44. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/header-logo.js +1 -1
  45. package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/header.js +35 -0
  46. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/hr.js +1 -1
  47. package/.medusa/server/{modules → src/modules}/documents/services/templates/invoices/basic/parts/invoice-info.js +1 -1
  48. package/.medusa/server/src/modules/documents/services/templates/invoices/basic/parts/table.js +97 -0
  49. package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/basic.js +1 -1
  50. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +69 -0
  51. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +65 -0
  52. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +37 -0
  53. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/header.js +37 -0
  54. package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/parts/hr.js +1 -1
  55. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +44 -0
  56. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +44 -0
  57. package/.medusa/server/src/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +35 -0
  58. package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/parts/table-order-info.js +1 -1
  59. package/.medusa/server/{modules → src/modules}/documents/services/templates/packing-slips/basic/small.js +1 -1
  60. package/.medusa/server/{modules → src/modules}/documents/types/api.js +1 -1
  61. package/.medusa/server/{modules → src/modules}/documents/types/constants.js +1 -1
  62. package/.medusa/server/{modules → src/modules}/documents/types/dto.js +1 -1
  63. package/.medusa/server/{modules → src/modules}/documents/types/template-kind.js +1 -1
  64. package/.medusa/server/{modules → src/modules}/documents/utils/currency.js +1 -1
  65. package/.medusa/server/src/modules/parcel-shipping/index.js +13 -0
  66. package/.medusa/server/src/modules/parcel-shipping/migrations/Migration20251023000000.js +37 -0
  67. package/.medusa/server/src/modules/parcel-shipping/models/index.js +16 -0
  68. package/.medusa/server/src/modules/parcel-shipping/models/material-cost.js +24 -0
  69. package/.medusa/server/src/modules/parcel-shipping/models/packaging-material.js +41 -0
  70. package/.medusa/server/src/modules/parcel-shipping/models/packing-policy.js +37 -0
  71. package/.medusa/server/src/modules/parcel-shipping/models/parcel-box.js +25 -0
  72. package/.medusa/server/src/modules/parcel-shipping/models/service-area.js +30 -0
  73. package/.medusa/server/src/modules/parcel-shipping/models/shipping-rate.js +50 -0
  74. package/.medusa/server/src/modules/parcel-shipping/service.js +485 -0
  75. package/.medusa/server/{providers → src/providers}/company-truck/index.js +1 -1
  76. package/.medusa/server/src/providers/company-truck/models/company-truck-rate.js +23 -0
  77. package/.medusa/server/{providers → src/providers}/company-truck/models/index.js +3 -2
  78. package/.medusa/server/src/providers/company-truck/models/material-cost.js +24 -0
  79. package/.medusa/server/src/providers/company-truck/models/parcel-box.js +21 -0
  80. package/.medusa/server/src/providers/company-truck/models/service-area.js +20 -0
  81. package/.medusa/server/src/providers/company-truck/service.js +456 -0
  82. package/.medusa/server/{providers → src/providers}/company-truck/types.js +1 -1
  83. package/.medusa/server/src/providers/index.js +8 -0
  84. package/.medusa/server/src/providers/parcel-fulfillment.js +378 -0
  85. package/.medusa/server/{providers → src/providers}/private-carrier/index.js +1 -1
  86. package/.medusa/server/{providers → src/providers}/private-carrier/models/index.js +1 -1
  87. package/.medusa/server/src/providers/private-carrier/models/parcel-box.js +21 -0
  88. package/.medusa/server/src/providers/private-carrier/models/private-carrier-rate.js +23 -0
  89. package/.medusa/server/src/providers/private-carrier/models/service-area.js +20 -0
  90. package/.medusa/server/src/providers/private-carrier/service.js +392 -0
  91. package/.medusa/server/{providers → src/providers}/private-carrier/types.js +1 -1
  92. package/.medusa/server/src/types/index.js +11 -0
  93. package/.medusa/server/src/utils/packing.js +386 -0
  94. package/.medusa/server/src/workflows/assign-packing-slip.js +35 -0
  95. package/.medusa/server/{workflows → src/workflows}/index.js +1 -1
  96. package/package.json +21 -11
  97. package/.medusa/server/api/admin/documents/document-packing-slip-settings/route.js +0 -62
  98. package/.medusa/server/api/admin/parcel-boxes/[id]/route.js +0 -45
  99. package/.medusa/server/api/admin/parcel-boxes/route.js +0 -49
  100. package/.medusa/server/api/admin/shipping-config/areas/[id]/route.js +0 -42
  101. package/.medusa/server/api/admin/shipping-config/areas/route.js +0 -49
  102. package/.medusa/server/api/admin/shipping-config/rates/[id]/route.js +0 -82
  103. package/.medusa/server/api/admin/shipping-config/rates/route.js +0 -95
  104. package/.medusa/server/api/shipping/distance/route.js +0 -85
  105. package/.medusa/server/api/shipping/distance/utils/zodTransform.js +0 -20
  106. package/.medusa/server/api/store/parcel-box-selector/route.js +0 -55
  107. package/.medusa/server/api/webhooks/tracking/route.js +0 -48
  108. package/.medusa/server/common/utils/packing.js +0 -379
  109. package/.medusa/server/index.js +0 -28
  110. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/customer-info.js +0 -69
  111. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/header.js +0 -35
  112. package/.medusa/server/modules/documents/services/templates/invoices/basic/parts/table.js +0 -97
  113. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info-small.js +0 -69
  114. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/customer-info.js +0 -65
  115. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header-small.js +0 -37
  116. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/header.js +0 -37
  117. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items-small.js +0 -44
  118. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-items.js +0 -44
  119. package/.medusa/server/modules/documents/services/templates/packing-slips/basic/parts/table-order-info-small.js +0 -35
  120. package/.medusa/server/providers/company-truck/models/company-truck-rate.js +0 -23
  121. package/.medusa/server/providers/company-truck/models/parcel-box.js +0 -21
  122. package/.medusa/server/providers/company-truck/models/service-area.js +0 -20
  123. package/.medusa/server/providers/company-truck/service.js +0 -456
  124. package/.medusa/server/providers/private-carrier/models/parcel-box.js +0 -21
  125. package/.medusa/server/providers/private-carrier/models/private-carrier-rate.js +0 -23
  126. package/.medusa/server/providers/private-carrier/models/service-area.js +0 -20
  127. package/.medusa/server/providers/private-carrier/service.js +0 -392
  128. package/.medusa/server/workflows/assign-packing-slip.js +0 -31
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectBestPacking = selectBestPacking;
4
+ const PADDING_PER_SIDE_CM = 2;
5
+ const PADDING_TOTAL = PADDING_PER_SIDE_CM * 2;
6
+ /**
7
+ * Select best packing solution from available boxes
8
+ * Implements bin-packing algorithm with:
9
+ * - 2cm padding per side per item
10
+ * - 6 orientations per item
11
+ * - Layered packing (vertical axis)
12
+ * - Guillotine 2D within each layer
13
+ * - Stacking rules (noStack, fragile, stackable_max_layers)
14
+ */
15
+ function selectBestPacking(items, boxes) {
16
+ const expandedItems = expandItems(items);
17
+ if (!expandedItems.length) {
18
+ return {
19
+ success: false,
20
+ code: "invalid_items",
21
+ message: "No items with positive quantity were provided.",
22
+ };
23
+ }
24
+ const successful = [];
25
+ const overweight = [];
26
+ const nearFits = [];
27
+ for (const box of boxes) {
28
+ const evaluation = evaluateBox(box, expandedItems);
29
+ if (evaluation.status === "success") {
30
+ successful.push(evaluation.evaluation);
31
+ continue;
32
+ }
33
+ if (evaluation.evaluation) {
34
+ if (evaluation.status === "overweight") {
35
+ overweight.push(evaluation.evaluation);
36
+ }
37
+ else if (evaluation.status === "no_fit") {
38
+ nearFits.push(evaluation.evaluation);
39
+ }
40
+ }
41
+ }
42
+ if (successful.length) {
43
+ const sorted = successful.sort(comparePacking);
44
+ return {
45
+ success: true,
46
+ result: sorted[0],
47
+ };
48
+ }
49
+ if (overweight.length) {
50
+ return {
51
+ success: false,
52
+ code: "no_fit_weight",
53
+ message: "Total weight exceeds the maximum weight limit for available boxes.",
54
+ alternatives: overweight.slice(0, 3).sort(comparePacking),
55
+ };
56
+ }
57
+ return {
58
+ success: false,
59
+ code: "no_fit",
60
+ message: "No configured box can fit the provided items.",
61
+ alternatives: nearFits.slice(0, 3).sort(comparePacking),
62
+ };
63
+ }
64
+ function evaluateBox(box, items) {
65
+ const totalActualWeight = items.reduce((acc, item) => acc + item.weight, 0);
66
+ const packedVolume = items.reduce((acc, item) => acc + item.volume, 0);
67
+ const initialMetrics = {
68
+ usedHeight: 0,
69
+ headroom: box.height_cm,
70
+ wasteAreaSum: box.width_cm * box.length_cm,
71
+ voidVolume: Math.max(box.width_cm * box.length_cm * box.height_cm - packedVolume, 0),
72
+ layers: 0,
73
+ placements: [],
74
+ totalWeightKg: Number(totalActualWeight.toFixed(4)),
75
+ };
76
+ if (totalActualWeight > box.max_weight_kg) {
77
+ return {
78
+ status: "overweight",
79
+ overBy: totalActualWeight - box.max_weight_kg,
80
+ evaluation: {
81
+ box,
82
+ metrics: initialMetrics,
83
+ },
84
+ };
85
+ }
86
+ const layers = [];
87
+ const sortedItems = items
88
+ .map((item) => ({ item }))
89
+ .sort((a, b) => b.item.volume - a.item.volume);
90
+ for (const { item } of sortedItems) {
91
+ const orientations = getOrientations(item, Boolean(item.attributes?.noStack));
92
+ const itemStackable = getStackableValue(item.attributes);
93
+ let placed = false;
94
+ for (const orientation of orientations) {
95
+ for (const layer of layers) {
96
+ // noStack items can only be placed on ground layer
97
+ if (item.attributes?.noStack && layer.index !== 0) {
98
+ continue;
99
+ }
100
+ // Check if we can stack on the layer below
101
+ if (layer.index > 0 && !canStackOnLayer(layers[layer.index - 1])) {
102
+ continue;
103
+ }
104
+ const totalHeightIfPlaced = layers.reduce((acc, existingLayer) => acc +
105
+ (existingLayer === layer
106
+ ? Math.max(existingLayer.height, orientation.height)
107
+ : existingLayer.height), 0);
108
+ if (totalHeightIfPlaced > box.height_cm + 1e-6) {
109
+ continue;
110
+ }
111
+ const placement = placeInLayer(layer, orientation);
112
+ if (placement) {
113
+ placed = true;
114
+ layer.height = Math.max(layer.height, orientation.height);
115
+ layer.hasNoStack =
116
+ layer.hasNoStack || Boolean(item.attributes?.noStack);
117
+ layer.placements.push({
118
+ sku: item.sku,
119
+ orientation,
120
+ position: [placement.x, placement.y, layer.startHeight],
121
+ stackable: itemStackable,
122
+ stackedOnTopCount: 0,
123
+ });
124
+ if (layer.index > 0) {
125
+ incrementStackCount(layers[layer.index - 1]);
126
+ }
127
+ recalculateLayerHeights(layers);
128
+ updateWasteArea(initialMetrics, layers);
129
+ break;
130
+ }
131
+ }
132
+ if (placed) {
133
+ break;
134
+ }
135
+ // Try creating new layer
136
+ const totalUsedHeight = layers.reduce((acc, layer) => acc + layer.height, 0);
137
+ if (totalUsedHeight + orientation.height > box.height_cm + 1e-6) {
138
+ continue;
139
+ }
140
+ if (item.attributes?.noStack && layers.length > 0) {
141
+ continue;
142
+ }
143
+ if (layers.length > 0 && !canStackOnLayer(layers[layers.length - 1])) {
144
+ continue;
145
+ }
146
+ const newLayer = {
147
+ index: layers.length,
148
+ startHeight: totalUsedHeight,
149
+ height: orientation.height,
150
+ spaces: [
151
+ {
152
+ x: 0,
153
+ y: 0,
154
+ width: box.width_cm,
155
+ length: box.length_cm,
156
+ },
157
+ ],
158
+ placements: [],
159
+ hasNoStack: Boolean(item.attributes?.noStack),
160
+ };
161
+ const placement = placeInLayer(newLayer, orientation);
162
+ if (!placement) {
163
+ continue;
164
+ }
165
+ newLayer.placements.push({
166
+ sku: item.sku,
167
+ orientation,
168
+ position: [placement.x, placement.y, newLayer.startHeight],
169
+ stackable: itemStackable,
170
+ stackedOnTopCount: 0,
171
+ });
172
+ if (layers.length > 0) {
173
+ incrementStackCount(layers[layers.length - 1]);
174
+ }
175
+ layers.push(newLayer);
176
+ recalculateLayerHeights(layers);
177
+ updateWasteArea(initialMetrics, layers);
178
+ placed = true;
179
+ break;
180
+ }
181
+ if (!placed) {
182
+ return {
183
+ status: "no_fit",
184
+ slackScore: calculateSlackScore(box, items),
185
+ evaluation: {
186
+ box,
187
+ metrics: initialMetrics,
188
+ },
189
+ };
190
+ }
191
+ }
192
+ initialMetrics.layers = layers.length;
193
+ initialMetrics.usedHeight = layers.reduce((acc, layer) => acc + layer.height, 0);
194
+ initialMetrics.headroom = Number(Math.max(box.height_cm - initialMetrics.usedHeight, 0).toFixed(2));
195
+ initialMetrics.placements = layers.flatMap((layer, layerIdx) => layer.placements.map((placement) => ({
196
+ sku: placement.sku,
197
+ orientation: [
198
+ Number(placement.orientation.width.toFixed(2)),
199
+ Number(placement.orientation.length.toFixed(2)),
200
+ Number(placement.orientation.height.toFixed(2)),
201
+ ],
202
+ position: placement.position,
203
+ layerIndex: layerIdx,
204
+ })));
205
+ initialMetrics.wasteAreaSum = layers.reduce((acc, layer) => acc +
206
+ layer.spaces.reduce((spaceAcc, space) => {
207
+ return spaceAcc + space.width * space.length;
208
+ }, 0), 0);
209
+ return {
210
+ status: "success",
211
+ evaluation: {
212
+ box,
213
+ metrics: initialMetrics,
214
+ },
215
+ };
216
+ }
217
+ function expandItems(items) {
218
+ const expanded = [];
219
+ for (const item of items) {
220
+ const qty = Math.max(0, Math.floor(item.quantity));
221
+ if (!qty) {
222
+ continue;
223
+ }
224
+ const paddedWidth = item.width + PADDING_TOTAL;
225
+ const paddedLength = item.length + PADDING_TOTAL;
226
+ const paddedHeight = item.height + PADDING_TOTAL;
227
+ const volume = paddedWidth * paddedLength * paddedHeight;
228
+ for (let i = 0; i < qty; i++) {
229
+ expanded.push({
230
+ sku: item.sku,
231
+ baseWidth: item.width,
232
+ baseLength: item.length,
233
+ baseHeight: item.height,
234
+ width: paddedWidth,
235
+ length: paddedLength,
236
+ height: paddedHeight,
237
+ weight: item.weight,
238
+ volume,
239
+ attributes: item.attributes,
240
+ });
241
+ }
242
+ }
243
+ return expanded;
244
+ }
245
+ function getOrientations(item, noStack) {
246
+ const orientations = [];
247
+ const dims = [item.width, item.length, item.height];
248
+ const permutations = [
249
+ [dims[0], dims[1], dims[2]],
250
+ [dims[0], dims[2], dims[1]],
251
+ [dims[1], dims[0], dims[2]],
252
+ [dims[1], dims[2], dims[0]],
253
+ [dims[2], dims[0], dims[1]],
254
+ [dims[2], dims[1], dims[0]],
255
+ ];
256
+ for (const [w, l, h] of permutations) {
257
+ // noStack items must be horizontal (height < width and length)
258
+ if (noStack && h > Math.min(w, l)) {
259
+ continue;
260
+ }
261
+ orientations.push({
262
+ width: Number(w.toFixed(2)),
263
+ length: Number(l.toFixed(2)),
264
+ height: Number(h.toFixed(2)),
265
+ volume: Number((w * l * h).toFixed(2)),
266
+ });
267
+ }
268
+ return orientations.sort((a, b) => a.height - b.height || a.volume - b.volume);
269
+ }
270
+ /**
271
+ * Get stackable value from item attributes
272
+ * Priority: noStack > stackable > default (unlimited)
273
+ */
274
+ function getStackableValue(attributes) {
275
+ if (attributes?.noStack) {
276
+ return 0;
277
+ }
278
+ if (attributes?.stackable !== undefined) {
279
+ return attributes.stackable;
280
+ }
281
+ return undefined; // unlimited
282
+ }
283
+ function canStackOnLayer(layer) {
284
+ for (const placement of layer.placements) {
285
+ const stackable = placement.stackable;
286
+ if (stackable === 0) {
287
+ return false;
288
+ }
289
+ if (stackable === -1 || stackable === undefined) {
290
+ continue;
291
+ }
292
+ if (stackable > 0 && placement.stackedOnTopCount >= stackable) {
293
+ return false;
294
+ }
295
+ }
296
+ return true;
297
+ }
298
+ function incrementStackCount(layer) {
299
+ for (const placement of layer.placements) {
300
+ placement.stackedOnTopCount++;
301
+ }
302
+ }
303
+ function placeInLayer(layer, orientation) {
304
+ for (let i = 0; i < layer.spaces.length; i++) {
305
+ const space = layer.spaces[i];
306
+ if (orientation.width <= space.width + 1e-6 &&
307
+ orientation.length <= space.length + 1e-6) {
308
+ layer.spaces.splice(i, 1);
309
+ splitSpace(layer, space, orientation);
310
+ return {
311
+ x: space.x,
312
+ y: space.y,
313
+ width: orientation.width,
314
+ length: orientation.length,
315
+ };
316
+ }
317
+ }
318
+ return null;
319
+ }
320
+ function splitSpace(layer, space, orientation) {
321
+ const remainingWidth = Number(Math.max(space.width - orientation.width, 0).toFixed(2));
322
+ const remainingLength = Number(Math.max(space.length - orientation.length, 0).toFixed(2));
323
+ if (remainingWidth > 0) {
324
+ layer.spaces.push({
325
+ x: Number((space.x + orientation.width).toFixed(2)),
326
+ y: space.y,
327
+ width: remainingWidth,
328
+ length: orientation.length,
329
+ });
330
+ }
331
+ if (remainingLength > 0) {
332
+ layer.spaces.push({
333
+ x: space.x,
334
+ y: Number((space.y + orientation.length).toFixed(2)),
335
+ width: space.width,
336
+ length: remainingLength,
337
+ });
338
+ }
339
+ }
340
+ function recalculateLayerHeights(layers) {
341
+ let cursor = 0;
342
+ for (const layer of layers) {
343
+ layer.startHeight = Number(cursor.toFixed(2));
344
+ cursor += layer.height;
345
+ }
346
+ }
347
+ function updateWasteArea(metrics, layers) {
348
+ metrics.wasteAreaSum = layers.reduce((acc, layer) => {
349
+ return (acc +
350
+ layer.spaces.reduce((spaceAcc, space) => {
351
+ return spaceAcc + space.width * space.length;
352
+ }, 0));
353
+ }, 0);
354
+ }
355
+ function calculateSlackScore(box, items) {
356
+ const totalVolume = items.reduce((acc, item) => acc + item.volume, 0);
357
+ const boxVolume = box.width_cm * box.length_cm * box.height_cm;
358
+ const volumeSlack = boxVolume - totalVolume;
359
+ const maxWidth = Math.max(...items.map((item) => item.width));
360
+ const maxLength = Math.max(...items.map((item) => item.length));
361
+ const totalHeight = items.reduce((acc, item) => acc + item.height, 0);
362
+ const widthSlack = box.width_cm - maxWidth;
363
+ const lengthSlack = box.length_cm - maxLength;
364
+ const heightSlack = box.height_cm - totalHeight;
365
+ return ((volumeSlack > 0 ? volumeSlack : Number.MAX_SAFE_INTEGER) +
366
+ (widthSlack > 0 ? widthSlack : Number.MAX_SAFE_INTEGER / 2) +
367
+ (lengthSlack > 0 ? lengthSlack : Number.MAX_SAFE_INTEGER / 2) +
368
+ (heightSlack > 0 ? heightSlack : Number.MAX_SAFE_INTEGER / 2));
369
+ }
370
+ /**
371
+ * Compare packing solutions
372
+ * Priority: usedHeight < wasteAreaSum < voidVolume < price
373
+ */
374
+ function comparePacking(a, b) {
375
+ if (a.metrics.usedHeight !== b.metrics.usedHeight) {
376
+ return a.metrics.usedHeight - b.metrics.usedHeight;
377
+ }
378
+ if (a.metrics.wasteAreaSum !== b.metrics.wasteAreaSum) {
379
+ return a.metrics.wasteAreaSum - b.metrics.wasteAreaSum;
380
+ }
381
+ if (a.metrics.voidVolume !== b.metrics.voidVolume) {
382
+ return a.metrics.voidVolume - b.metrics.voidVolume;
383
+ }
384
+ return a.box.price_thb - b.box.price_thb;
385
+ }
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9wYWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOEVBLDhDQXdEQztBQTlIRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUE0RDlDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLEtBQWtCLEVBQ2xCLEtBQXFCO0lBRXJCLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxlQUFlO1lBQ3JCLE9BQU8sRUFBRSxnREFBZ0Q7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBd0IsRUFBRSxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUF3QixFQUFFLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQXdCLEVBQUUsQ0FBQztJQUV6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkQsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6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QUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDckQsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDM0MsQ0FBQyJ9
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
4
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const documents_1 = require("../modules/documents");
7
+ const assignPackingSlipToOrderWorkflow = (0, workflows_sdk_1.createWorkflow)("assign-packing-slip-to-order", function (input) {
8
+ (0, workflows_sdk_1.when)(input, (input) => {
9
+ return input.oldPackingSlipId !== undefined;
10
+ }).then(() => {
11
+ (0, core_flows_1.dismissRemoteLinkStep)([
12
+ {
13
+ [utils_1.Modules.ORDER]: {
14
+ order_id: input.orderId,
15
+ },
16
+ [documents_1.DOCUMENTS_MODULE]: {
17
+ document_packing_slip_id: input.oldPackingSlipId,
18
+ },
19
+ },
20
+ ]);
21
+ });
22
+ (0, core_flows_1.createRemoteLinkStep)([
23
+ {
24
+ [utils_1.Modules.ORDER]: {
25
+ order_id: input.orderId,
26
+ },
27
+ [documents_1.DOCUMENTS_MODULE]: {
28
+ document_packing_slip_id: input.newPackingSlipId,
29
+ },
30
+ },
31
+ ]);
32
+ return new workflows_sdk_1.WorkflowResponse({});
33
+ });
34
+ exports.default = assignPackingSlipToOrderWorkflow;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXBhY2tpbmctc2xpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvYXNzaWduLXBhY2tpbmctc2xpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUkyQztBQUMzQyw0REFHcUM7QUFDckMscURBQW9EO0FBQ3BELG9EQUF3RDtBQVF4RCxNQUFNLGdDQUFnQyxHQUFHLElBQUEsOEJBQWMsRUFDckQsOEJBQThCLEVBQzlCLFVBQVUsS0FBb0M7SUFDNUMsSUFBQSxvQkFBSSxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1gsSUFBQSxrQ0FBcUIsRUFBQztZQUNwQjtnQkFDRSxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDZixRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87aUJBQ3hCO2dCQUNELENBQUMsNEJBQWdCLENBQUMsRUFBRTtvQkFDbEIsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDakQ7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxpQ0FBb0IsRUFBQztRQUNuQjtZQUNFLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNmLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTzthQUN4QjtZQUNELENBQUMsNEJBQWdCLENBQUMsRUFBRTtnQkFDbEIsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjthQUNqRDtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLGdDQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FDRixDQUFDO0FBRUYsa0JBQWUsZ0NBQWdDLENBQUMifQ==
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.assignPackingSlipToOrderWorkflow = void 0;
7
7
  var assign_packing_slip_1 = require("./assign-packing-slip");
8
8
  Object.defineProperty(exports, "assignPackingSlipToOrderWorkflow", { enumerable: true, get: function () { return __importDefault(assign_packing_slip_1).default; } });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDZEQUFtRjtBQUExRSx3SkFBQSxPQUFPLE9BQW9DIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDZEQUFtRjtBQUExRSx3SkFBQSxPQUFPLE9BQW9DIn0=
package/package.json CHANGED
@@ -1,21 +1,27 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-parcel-shipping",
3
- "version": "0.2.13",
3
+ "version": "0.2.18",
4
4
  "description": "Parcel box selection and Thailand shipping quotes for Medusa.",
5
5
  "author": "LodashVenture",
6
6
  "license": "MIT",
7
7
  "files": [
8
- ".medusa/server"
8
+ ".medusa/server/**/*",
9
+ ".medusa/admin/**/*"
9
10
  ],
11
+ "main": "./.medusa/server/index.js",
10
12
  "exports": {
11
13
  "./package.json": "./package.json",
12
- "./workflows": "./.medusa/server/workflows/index.js",
13
- "./workflows/*": "./.medusa/server/workflows/*.js",
14
- "./providers/*": "./.medusa/server/providers/*/index.js",
15
- "./modules/*": "./.medusa/server/modules/*/index.js",
16
- "./links/*": "./.medusa/server/links/*.js",
17
- "./admin": "./.medusa/server/src/admin/index.mjs",
18
- "./*": "./.medusa/server/*.js"
14
+ "./workflows": "./.medusa/server/src/workflows/index.js",
15
+ "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
16
+ "./modules/*": "./.medusa/server/src/modules/*/index.js",
17
+ "./providers": "./.medusa/server/src/providers/index.js",
18
+ "./providers/*": "./.medusa/server/src/providers/*/index.js",
19
+ "./*": "./.medusa/server/src/*.js",
20
+ "./admin": {
21
+ "import": "./.medusa/server/src/admin/index.mjs",
22
+ "require": "./.medusa/server/src/admin/index.js",
23
+ "default": "./.medusa/server/src/admin/index.js"
24
+ }
19
25
  },
20
26
  "keywords": [
21
27
  "medusa",
@@ -24,9 +30,10 @@
24
30
  "parcel"
25
31
  ],
26
32
  "scripts": {
27
- "build": "medusa plugin:build",
33
+ "build": "medusa plugin:build && npm run resolve:aliases",
28
34
  "dev": "medusa plugin:develop",
29
- "prepublishOnly": "medusa plugin:build"
35
+ "prepublishOnly": "medusa plugin:build && npm run resolve:aliases",
36
+ "resolve:aliases": "tsc-alias -p tsconfig.json --outDir .medusa/server"
30
37
  },
31
38
  "devDependencies": {
32
39
  "@medusajs/admin-sdk": "2.11.0",
@@ -44,7 +51,9 @@
44
51
  "prop-types": "^15.8.1",
45
52
  "react": "^18.2.0",
46
53
  "react-dom": "^18.2.0",
54
+ "rimraf": "^6.0.1",
47
55
  "ts-node": "^10.9.2",
56
+ "tsc-alias": "^1.8.16",
48
57
  "typescript": "^5.6.2",
49
58
  "vite": "^5.2.11",
50
59
  "yalc": "^1.0.0-pre.53"
@@ -66,6 +75,7 @@
66
75
  "dependencies": {
67
76
  "@types/pdfkit": "^0.13.5",
68
77
  "i18next": "^23.11.0",
78
+ "lucide-react": "^0.547.0",
69
79
  "pdfkit": "0.15.0",
70
80
  "thai-address-autocomplete-react": "^1.2.2",
71
81
  "zod": "^4.1.5"
@@ -1,62 +0,0 @@
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==
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PUT = PUT;
4
- exports.DELETE = DELETE;
5
- const zod_1 = require("zod");
6
- const 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==