@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,392 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrivateCarrierFulfillmentProvider = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const utils_2 = require("@medusajs/framework/utils");
6
+ const parcel_box_1 = require("./models/parcel-box");
7
+ const private_carrier_rate_1 = require("./models/private-carrier-rate");
8
+ const osrm_client_1 = require("../../common/utils/osrm-client");
9
+ const packing_1 = require("../../common/utils/packing");
10
+ const CACHE_TTL_MS = 60_000;
11
+ // Inner data service class
12
+ class PrivateCarrierDataService extends (0, utils_2.MedusaService)({
13
+ ParcelBox: parcel_box_1.ParcelBox,
14
+ PrivateCarrierRate: private_carrier_rate_1.PrivateCarrierRate,
15
+ }) {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.cache = {
19
+ boxes: { data: null, expiresAt: 0 },
20
+ rates: { data: null, expiresAt: 0 },
21
+ };
22
+ }
23
+ invalidateCache(keys) {
24
+ if (!keys || keys.length === 0) {
25
+ Object.keys(this.cache).forEach((key) => {
26
+ this.cache[key] = { data: null, expiresAt: 0 };
27
+ });
28
+ return;
29
+ }
30
+ for (const key of keys) {
31
+ this.cache[key] = { data: null, expiresAt: 0 };
32
+ }
33
+ }
34
+ async findParcelBoxes(filters = {}, config = {}) {
35
+ const cacheKey = "boxes";
36
+ const now = Date.now();
37
+ if (this.cache[cacheKey].data &&
38
+ this.cache[cacheKey].expiresAt > now &&
39
+ Object.keys(filters).length === 0) {
40
+ return this.cache[cacheKey].data;
41
+ }
42
+ const boxes = await this.listParcelBoxes(filters, config);
43
+ if (Object.keys(filters).length === 0) {
44
+ this.cache[cacheKey] = { data: boxes, expiresAt: now + CACHE_TTL_MS };
45
+ }
46
+ return boxes;
47
+ }
48
+ async findPrivateCarrierRates(filters = {}, config = {}) {
49
+ const cacheKey = "rates";
50
+ const now = Date.now();
51
+ if (this.cache[cacheKey].data &&
52
+ this.cache[cacheKey].expiresAt > now &&
53
+ Object.keys(filters).length === 0) {
54
+ return this.cache[cacheKey].data;
55
+ }
56
+ const rates = await this.listPrivateCarrierRates(filters, config);
57
+ if (Object.keys(filters).length === 0) {
58
+ this.cache[cacheKey] = { data: rates, expiresAt: now + CACHE_TTL_MS };
59
+ }
60
+ return rates;
61
+ }
62
+ async saveParcelBoxes(data) {
63
+ const result = await this.createParcelBoxes(data);
64
+ this.invalidateCache(["boxes"]);
65
+ return result;
66
+ }
67
+ async modifyParcelBox(id, data) {
68
+ const result = await this.updateParcelBoxes({ id, ...data });
69
+ this.invalidateCache(["boxes"]);
70
+ return result;
71
+ }
72
+ async removeParcelBox(id) {
73
+ const result = await this.deleteParcelBoxes([id]);
74
+ this.invalidateCache(["boxes"]);
75
+ return result;
76
+ }
77
+ async savePrivateCarrierRates(data) {
78
+ const result = await this.createPrivateCarrierRates(data);
79
+ this.invalidateCache(["rates"]);
80
+ return result;
81
+ }
82
+ async modifyPrivateCarrierRate(id, data) {
83
+ const result = await this.updatePrivateCarrierRates({ id, ...data });
84
+ this.invalidateCache(["rates"]);
85
+ return result;
86
+ }
87
+ async removePrivateCarrierRate(id) {
88
+ const result = await this.deletePrivateCarrierRates([id]);
89
+ this.invalidateCache(["rates"]);
90
+ return result;
91
+ }
92
+ }
93
+ class PrivateCarrierFulfillmentProvider extends utils_1.AbstractFulfillmentProviderService {
94
+ constructor(container, options = {}) {
95
+ super();
96
+ this.dataService = new PrivateCarrierDataService(container);
97
+ this.weightUnit = options.weight_unit ?? "g";
98
+ this.osrmClient = new osrm_client_1.OSRMClient();
99
+ }
100
+ getDataService() {
101
+ return this.dataService;
102
+ }
103
+ async getFulfillmentOptions() {
104
+ return [
105
+ {
106
+ id: "private-carrier",
107
+ name: "Company Truck Delivery",
108
+ },
109
+ ];
110
+ }
111
+ async validateFulfillmentData(optionData, data, context) {
112
+ const address = this.normalizeAddress(context?.shipping_address);
113
+ const quoteItems = this.convertToQuoteItems(context);
114
+ if (!quoteItems.length) {
115
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "cart_items_missing_dimensions");
116
+ }
117
+ const result = await this.quote({
118
+ items: quoteItems,
119
+ shipping_address: address,
120
+ });
121
+ if (!result.success) {
122
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, result.failure.message || "Unable to calculate box size for items");
123
+ }
124
+ return {
125
+ ...data,
126
+ shipping_quote: result.shipping_quote,
127
+ total_weight_kg: result.packing.totalWeightKg,
128
+ destination: address,
129
+ box: result.best_box,
130
+ packing: result.packing,
131
+ };
132
+ }
133
+ async validateOption(data) {
134
+ return true;
135
+ }
136
+ async canCalculate() {
137
+ return true;
138
+ }
139
+ async calculatePrice(optionData, data, context) {
140
+ const address = this.normalizeAddress(context?.shipping_address);
141
+ const totalWeightKg = this.calculateTotalWeightKg(context);
142
+ if (!totalWeightKg) {
143
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "cart_items_missing_weight");
144
+ }
145
+ const quote = await this.quoteShippingOnly(address, totalWeightKg);
146
+ return {
147
+ calculated_amount: quote.price,
148
+ is_calculated_price_tax_inclusive: false,
149
+ };
150
+ }
151
+ async createFulfillment(data) {
152
+ const fulfillmentId = `CT-${Date.now()}`;
153
+ return {
154
+ data: {
155
+ carrier: "PRIVATE_CARRIER",
156
+ box: data.box,
157
+ packing: data.packing,
158
+ shipping_quote: data.shipping_quote,
159
+ total_weight_kg: data.total_weight_kg,
160
+ destination: data.destination,
161
+ tracking_number: null,
162
+ tracking_url: null,
163
+ label_url: null,
164
+ fulfillment_id: fulfillmentId,
165
+ created_at: new Date().toISOString(),
166
+ metadata: {
167
+ carrier_name: "Company Truck Delivery",
168
+ estimated_delivery_days: 1,
169
+ },
170
+ },
171
+ labels: [],
172
+ };
173
+ }
174
+ async cancelFulfillment() {
175
+ return {
176
+ status: "cancelled",
177
+ };
178
+ }
179
+ async createReturnFulfillment() {
180
+ return {
181
+ data: {
182
+ carrier: "PRIVATE_CARRIER",
183
+ return: true,
184
+ },
185
+ labels: [],
186
+ };
187
+ }
188
+ convertToQuoteItems(context) {
189
+ const items = context?.items ?? [];
190
+ const quoteItems = [];
191
+ for (const item of items) {
192
+ const lineItem = item;
193
+ const quantity = Number(item.quantity ?? 0);
194
+ if (!quantity) {
195
+ continue;
196
+ }
197
+ const rawWeight = Number(lineItem?.variant?.weight ??
198
+ lineItem?.weight ??
199
+ lineItem?.raw_weight ??
200
+ 0) || 0;
201
+ const weight = this.normalizeWeight(rawWeight);
202
+ const width = Number(lineItem?.variant?.width ??
203
+ lineItem?.width ??
204
+ lineItem?.raw_width ??
205
+ 0) || 0;
206
+ const length = Number(lineItem?.variant?.length ??
207
+ lineItem?.length ??
208
+ lineItem?.raw_length ??
209
+ 0) || 0;
210
+ const height = Number(lineItem?.variant?.height ??
211
+ lineItem?.height ??
212
+ lineItem?.raw_height ??
213
+ 0) || 0;
214
+ if (!width || !length || !height || !weight) {
215
+ continue;
216
+ }
217
+ const noStack = Boolean(lineItem?.variant?.metadata?.noStack ?? lineItem?.metadata?.noStack);
218
+ const stackable = lineItem?.variant?.metadata?.stackable ?? lineItem?.metadata?.stackable;
219
+ const attributes = {};
220
+ if (noStack) {
221
+ attributes.noStack = true;
222
+ }
223
+ if (stackable !== undefined && stackable !== null) {
224
+ attributes.stackable = Number(stackable);
225
+ }
226
+ quoteItems.push({
227
+ sku: lineItem?.variant?.sku || lineItem?.sku || "unknown",
228
+ width,
229
+ length,
230
+ height,
231
+ weight,
232
+ quantity,
233
+ attributes: Object.keys(attributes).length > 0 ? attributes : undefined,
234
+ });
235
+ }
236
+ return quoteItems;
237
+ }
238
+ calculateTotalWeightKg(context) {
239
+ const items = context?.items ?? [];
240
+ const total = items.reduce((acc, item) => {
241
+ const lineItem = item;
242
+ const quantity = Number(item.quantity ?? 0);
243
+ if (!quantity) {
244
+ return acc;
245
+ }
246
+ const rawWeight = Number(lineItem?.variant?.weight ??
247
+ lineItem?.weight ??
248
+ lineItem?.raw_weight ??
249
+ 0) || 0;
250
+ const normalized = this.normalizeWeight(rawWeight);
251
+ if (!normalized) {
252
+ return acc;
253
+ }
254
+ return acc + normalized * quantity;
255
+ }, 0);
256
+ return Number(total.toFixed(4));
257
+ }
258
+ normalizeWeight(weight) {
259
+ if (!weight || !Number.isFinite(weight)) {
260
+ return 0;
261
+ }
262
+ if (this.weightUnit === "kg") {
263
+ return Math.max(weight, 0);
264
+ }
265
+ if (this.weightUnit === "g" || weight > 50) {
266
+ return Math.max(weight / 1000, 0);
267
+ }
268
+ return Math.max(weight, 0);
269
+ }
270
+ normalizeAddress(address) {
271
+ if (!address) {
272
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "shipping_address_required");
273
+ }
274
+ const province = String(address.province ??
275
+ address.province_code ??
276
+ address.state ??
277
+ address.city ??
278
+ "").trim() || "";
279
+ const postcode = String(address.postal_code ??
280
+ address.postcode ??
281
+ address.zipcode ??
282
+ address.zip ??
283
+ "").trim() || "";
284
+ const country = String(address.country_code ?? address.country ?? "").toUpperCase();
285
+ if (!province && !postcode) {
286
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "shipping_address_missing_destination");
287
+ }
288
+ if (!country) {
289
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "shipping_address_missing_country");
290
+ }
291
+ return {
292
+ province,
293
+ postcode,
294
+ country,
295
+ };
296
+ }
297
+ async quote(input) {
298
+ const country = (input.shipping_address?.country || "").toUpperCase();
299
+ if (country !== "TH") {
300
+ return {
301
+ success: false,
302
+ code: "country_not_supported",
303
+ message: `Country ${country} is not supported. Only Thailand (TH) is supported.`,
304
+ };
305
+ }
306
+ const boxes = await this.dataService.findParcelBoxes({ active: true });
307
+ if (!boxes || boxes.length === 0) {
308
+ return {
309
+ success: false,
310
+ code: "no_boxes_configured",
311
+ message: "No active parcel boxes are configured.",
312
+ };
313
+ }
314
+ const boxCandidates = boxes.map((box) => ({
315
+ id: box.id,
316
+ name: box.name,
317
+ width_cm: box.width_cm,
318
+ length_cm: box.length_cm,
319
+ height_cm: box.height_cm,
320
+ max_weight_kg: box.max_weight_kg,
321
+ price_thb: box.price_thb,
322
+ }));
323
+ const packingResult = (0, packing_1.selectBestPacking)(input.items, boxCandidates);
324
+ if (!packingResult.success) {
325
+ return {
326
+ success: false,
327
+ code: packingResult.code,
328
+ message: packingResult.message,
329
+ alternatives: packingResult.alternatives?.map((alt) => ({
330
+ box: alt.box,
331
+ packing: alt.metrics,
332
+ })),
333
+ };
334
+ }
335
+ const totalWeightKg = packingResult.result.metrics.totalWeightKg;
336
+ const shippingQuote = await this.quoteShippingOnly(input.shipping_address, totalWeightKg);
337
+ return {
338
+ success: true,
339
+ best_box: packingResult.result.box,
340
+ packing: packingResult.result.metrics,
341
+ shipping_quote: shippingQuote,
342
+ };
343
+ }
344
+ async quoteShippingOnly(address, weight) {
345
+ const method = "PRIVATE_CARRIER";
346
+ const area = "OUT_OF_AREA";
347
+ const rate = await this.findRateForWeight(weight);
348
+ if (!rate) {
349
+ return {
350
+ method,
351
+ area,
352
+ weightKg: weight,
353
+ price: 0,
354
+ currency: "THB",
355
+ error: "No shipping rate configured for this weight",
356
+ };
357
+ }
358
+ return {
359
+ method,
360
+ area,
361
+ weightKg: weight,
362
+ price: rate.price_thb,
363
+ currency: rate.currency || "THB",
364
+ };
365
+ }
366
+ async quoteShippingWithDistance(origin, destination, address, weight) {
367
+ const distanceKm = await this.osrmClient.calculateRouteDistance(origin, destination);
368
+ const baseQuote = await this.quoteShippingOnly(address, weight);
369
+ const distanceCharge = distanceKm * 15;
370
+ return {
371
+ ...baseQuote,
372
+ price: baseQuote.price + distanceCharge,
373
+ distance_km: distanceKm,
374
+ };
375
+ }
376
+ async findRateForWeight(weightKg) {
377
+ const rates = await this.dataService.findPrivateCarrierRates({
378
+ active: true,
379
+ });
380
+ const sortedRates = rates.sort((a, b) => a.max_weight_kg - b.max_weight_kg);
381
+ for (const rate of sortedRates) {
382
+ if (weightKg <= rate.max_weight_kg) {
383
+ return rate;
384
+ }
385
+ }
386
+ return null;
387
+ }
388
+ }
389
+ exports.PrivateCarrierFulfillmentProvider = PrivateCarrierFulfillmentProvider;
390
+ PrivateCarrierFulfillmentProvider.identifier = "private-carrier";
391
+ exports.default = PrivateCarrierFulfillmentProvider;
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvcHJpdmF0ZS1jYXJyaWVyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR21DO0FBa0JuQyxxREFBMEQ7QUFDMUQsb0RBQWdEO0FBQ2hELHdFQUFtRTtBQUNuRSxnRUFBNEQ7QUFDNUQsd0RBQStEO0FBTS9ELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUc1QiwyQkFBMkI7QUFDM0IsTUFBTSx5QkFBMEIsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDcEQsU0FBUyxFQUFULHNCQUFTO0lBQ1Qsa0JBQWtCLEVBQWxCLHlDQUFrQjtDQUNuQixDQUFDO0lBSEY7O1FBSVUsVUFBSyxHQUF1RDtZQUNsRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQ3BDLENBQUM7SUFzRkosQ0FBQztJQXBGQyxlQUFlLENBQUMsSUFBaUI7UUFDL0IsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENB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
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3ByaXZhdGUtY2Fycmllci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3ByaXZhdGUtY2Fycmllci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Unified Types for Parcel Shipping Plugin
4
+ * Supports 4 service levels:
5
+ * - COMPANY_FLEET / MESSENGER_3H
6
+ * - COMPANY_TRUCK / SAME_DAY
7
+ * - PRIVATE_CARRIER / STANDARD_3_5D (EMS)
8
+ * - PRIVATE_CARRIER / EXPRESS_1_2D (Flash/J&T/Kerry)
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0cifQ==