@foxtware/mineral 0.1.23 → 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
  };
@@ -60,7 +60,7 @@ const shopifyMutationDo = async (
60
60
  ...clientOptions,
61
61
  });
62
62
 
63
- logDeep(response);
63
+ // logDeep(response);
64
64
  return response;
65
65
  };
66
66
 
@@ -1,18 +1,17 @@
1
1
  const { ArgsWarden } = require('../utils');
2
2
  const { credsValidator } = require('../validators');
3
- const { shopifyClient } = require('./shopify.utils');
3
+ const { shopifyGet, shopifyGetter } = require('./shopifyGet');
4
4
 
5
5
  const argsWarden = new ArgsWarden([
6
6
  ['credsPayload', credsValidator],
7
7
  ]);
8
8
 
9
9
  const shopifyOrdersGet = async (
10
+ returnGetter, // Always bound
11
+
10
12
  credsPayload,
11
13
  {
12
- first = 50,
13
- after,
14
- query,
15
- apiVersion,
14
+ ...getterOptions // e.g. limit
16
15
  } = {},
17
16
  ) => {
18
17
 
@@ -23,52 +22,17 @@ const shopifyOrdersGet = async (
23
22
  return rejectResponse;
24
23
  }
25
24
 
26
- const response = await shopifyClient.fetch({
27
- requestPayload: {
28
- method: 'post',
29
- body: {
30
- query: `
31
- query OrdersGet(
32
- $first: Int!,
33
- $after: String,
34
- $query: String
35
- ) {
36
- orders(
37
- first: $first,
38
- after: $after,
39
- query: $query
40
- ) {
41
- edges {
42
- node {
43
- id
44
- name
45
- createdAt
46
- displayFinancialStatus
47
- displayFulfillmentStatus
48
- }
49
- }
50
- }
51
- }
52
- `,
53
- variables: {
54
- first,
55
- after,
56
- query,
57
- },
58
- },
59
- },
60
- context: {
61
- credsPayload,
62
- apiVersion,
63
- resultPath: 'data.orders',
25
+ const getterArgs = [
26
+ credsPayload,
27
+ 'order',
28
+ {
29
+ ...getterOptions,
64
30
  },
65
- });
66
-
67
- if (!response.ok) {
68
- return response;
69
- }
31
+ ];
70
32
 
71
- return response;
33
+ return returnGetter
34
+ ? shopifyGetter(...getterArgs)
35
+ : shopifyGet(...getterArgs);
72
36
  };
73
37
 
74
38
  const funcApiConfig = {
@@ -76,6 +40,7 @@ const funcApiConfig = {
76
40
  };
77
41
 
78
42
  module.exports = {
79
- shopifyOrdersGet,
43
+ shopifyOrdersGet: (...args) => shopifyOrdersGet(false, ...args),
44
+ shopifyOrdersGetter: (...args) => shopifyOrdersGet(true, ...args),
80
45
  funcApiConfig,
81
46
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxtware/mineral",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "bin": {
5
5
  "mineral": "bin/mineral.js"
6
6
  },