@foxtware/mineral 0.1.24 → 0.1.25
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.
|
@@ -6,6 +6,7 @@ const {
|
|
|
6
6
|
FetchClient,
|
|
7
7
|
appendUrlToBase,
|
|
8
8
|
logDeep,
|
|
9
|
+
objectToArray,
|
|
9
10
|
} = require('../utils');
|
|
10
11
|
const { withPeoplevoxSession } = require('../peoplevox/peoplevox.sessions');
|
|
11
12
|
|
|
@@ -70,7 +71,7 @@ const useSoapEnvelope = async (state) => {
|
|
|
70
71
|
sessionId,
|
|
71
72
|
});
|
|
72
73
|
|
|
73
|
-
!HOSTED && logDeep({ envelopeXml });
|
|
74
|
+
// !HOSTED && logDeep({ envelopeXml });
|
|
74
75
|
|
|
75
76
|
return {
|
|
76
77
|
requestPayload: {
|
|
@@ -214,6 +215,64 @@ const peoplevoxClient = new FetchClient({
|
|
|
214
215
|
],
|
|
215
216
|
});
|
|
216
217
|
|
|
218
|
+
const packageItemsToPackages = (packageItems) => {
|
|
219
|
+
const peoplevoxPackagesByKey = {};
|
|
220
|
+
|
|
221
|
+
for (const item of packageItems) {
|
|
222
|
+
|
|
223
|
+
// Do all destructuring here
|
|
224
|
+
const {
|
|
225
|
+
'Despatch number': despatchNumber,
|
|
226
|
+
'Package number': packageNumber,
|
|
227
|
+
'Package tracking number': trackingNumber,
|
|
228
|
+
'Package despatch timestamp': despatchTimestamp,
|
|
229
|
+
'Package carrier name': carrierName,
|
|
230
|
+
'Package service type code': serviceTypeCode,
|
|
231
|
+
'Sales order number': salesOrderNumber,
|
|
232
|
+
'Site reference': siteReference,
|
|
233
|
+
'Sales order item code': salesOrderItemCode,
|
|
234
|
+
'Sales order item line': salesOrderItemLine,
|
|
235
|
+
'Sales order item quantity ordered': salesOrderItemQuantityOrdered,
|
|
236
|
+
'Item code': itemCode,
|
|
237
|
+
'Item quantity': itemQuantity,
|
|
238
|
+
} = item;
|
|
239
|
+
|
|
240
|
+
/*
|
|
241
|
+
Dedupe by tracking number, since peoplevox returns a row per item
|
|
242
|
+
(not per package). Fall back to despatchNumber:packageNumber for
|
|
243
|
+
packages without a tracking number, so they don't all collapse together.
|
|
244
|
+
*/
|
|
245
|
+
const packageKey = trackingNumber || `${ despatchNumber }:${ packageNumber }`;
|
|
246
|
+
|
|
247
|
+
if (!peoplevoxPackagesByKey[packageKey]) {
|
|
248
|
+
peoplevoxPackagesByKey[packageKey] = {
|
|
249
|
+
despatchNumber,
|
|
250
|
+
packageNumber,
|
|
251
|
+
trackingNumber,
|
|
252
|
+
despatchTimestamp,
|
|
253
|
+
carrierName,
|
|
254
|
+
serviceTypeCode,
|
|
255
|
+
salesOrderNumber,
|
|
256
|
+
siteReference,
|
|
257
|
+
items: [],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
peoplevoxPackagesByKey[packageKey].items.push({
|
|
262
|
+
salesOrderItemCode,
|
|
263
|
+
salesOrderItemLine,
|
|
264
|
+
salesOrderItemQuantityOrdered,
|
|
265
|
+
itemCode,
|
|
266
|
+
itemQuantity,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const packages = objectToArray(peoplevoxPackagesByKey, { keyProp: 'packageKey' });
|
|
271
|
+
|
|
272
|
+
return packages;
|
|
273
|
+
};
|
|
274
|
+
|
|
217
275
|
module.exports = {
|
|
218
276
|
peoplevoxClient,
|
|
277
|
+
packageItemsToPackages,
|
|
219
278
|
};
|