@things-factory/operato-wms 3.7.2 → 3.7.7
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.
- package/client/pages/components/select-product-popup.js +5 -1
- package/client/pages/constants/order.js +10 -0
- package/client/pages/inbound/putaway-product.js +162 -139
- package/client/pages/inventory-check/inspecting-product.js +146 -80
- package/client/pages/manifest/create-loading-manifest.js +314 -0
- package/client/pages/manifest/dispatcher-verification-popup.js +86 -0
- package/client/pages/manifest/loading-manifest-detail.js +345 -0
- package/client/pages/manifest/loading-manifest-list.js +305 -0
- package/client/pages/order/arrival-notice/create-arrival-notice.js +8 -1
- package/client/pages/order/goods-received-note/received-note-list.js +138 -6
- package/client/pages/order/release-order/b2b/b2b-order-list.js +45 -5
- package/client/pages/order/release-order/b2b/b2b-order-requests.js +45 -5
- package/client/pages/order/release-order/b2c/b2c-order-requests.js +181 -21
- package/client/pages/order/release-order/bulk-print-packing-list.js +23 -0
- package/client/pages/order/release-order/create-release-order.js +25 -4
- package/client/pages/order/release-order/receive-release-order-request.js +27 -24
- package/client/pages/order/release-order/release-extra-product-popup.js +189 -56
- package/client/pages/order/release-order/release-order-detail.js +292 -71
- package/client/pages/order/reverse-kitting-order/reverse-kitting-order-detail.js +115 -50
- package/client/pages/order/reverse-kitting-order/reverse-kitting-order-list.js +1 -6
- package/client/pages/order/reverse-kitting-order/reverse-kitting-pallet-label-popup.js +239 -0
- package/client/pages/order/transport-order/delivery-order-list.js +99 -59
- package/client/pages/outbound/loading-product.js +4 -1
- package/client/pages/outbound/merged-outbound-worksheet.js +39 -1
- package/client/pages/outbound/packing-product.js +4 -1
- package/client/pages/outbound/packing-worksheet-list.js +39 -1
- package/client/pages/outbound/picking-product.js +622 -290
- package/client/pages/outbound/serial-number-popup.js +280 -0
- package/client/pages/outbound/worksheet-picking.js +28 -2
- package/client/pages/report/product-label-report.js +401 -0
- package/client/pages/support/inventory-comparison.js +296 -0
- package/client/pages/vas/print-product-label.js +298 -132
- package/client/pages/vas/reverse-kitting/execute-reverse-kitting.js +30 -12
- package/client/pages/vas/reverse-kitting/popup-combination-sets.js +75 -5
- package/client/pages/vas/reverse-kitting/popup-reverse-kitting-template.js +113 -18
- package/client/route.js +23 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +64 -54
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
- package/dist-server/graphql/resolvers/extra/add-release-good-products.js +34 -9
- package/dist-server/graphql/resolvers/extra/add-release-good-products.js.map +1 -1
- package/dist-server/graphql/resolvers/index.js +3 -1
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/inventory-comparison/index.js +6 -0
- package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +1 -0
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +78 -0
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/index.js +2 -1
- package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
- package/dist-server/graphql/resolvers/reports/product-label-report.js +56 -0
- package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -0
- package/dist-server/graphql/types/index.js +5 -2
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/inventory-comparison/index.js +13 -0
- package/dist-server/graphql/types/inventory-comparison/index.js.map +1 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +14 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +1 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +18 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +1 -0
- package/dist-server/graphql/types/reports/index.js +6 -1
- package/dist-server/graphql/types/reports/index.js.map +1 -1
- package/dist-server/graphql/types/reports/product-label-report-list.js +14 -0
- package/dist-server/graphql/types/reports/product-label-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/product-label-report.js +16 -0
- package/dist-server/graphql/types/reports/product-label-report.js.map +1 -0
- package/package.json +65 -65
- package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +75 -65
- package/server/graphql/resolvers/extra/add-release-good-products.ts +57 -15
- package/server/graphql/resolvers/index.ts +3 -1
- package/server/graphql/resolvers/inventory-comparison/index.ts +5 -0
- package/server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts +99 -0
- package/server/graphql/resolvers/reports/index.ts +3 -1
- package/server/graphql/resolvers/reports/product-label-report.ts +56 -0
- package/server/graphql/types/index.ts +5 -2
- package/server/graphql/types/inventory-comparison/index.ts +11 -0
- package/server/graphql/types/inventory-comparison/inventory-comparison-list.ts +8 -0
- package/server/graphql/types/inventory-comparison/inventory-comparison.ts +12 -0
- package/server/graphql/types/reports/index.ts +6 -1
- package/server/graphql/types/reports/product-label-report-list.ts +8 -0
- package/server/graphql/types/reports/product-label-report.ts +10 -0
- package/things-factory.config.js +24 -0
- package/translations/en.json +64 -12
- package/translations/ko.json +50 -1
- package/translations/ms.json +51 -1
- package/translations/zh.json +50 -1
|
@@ -232,6 +232,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
232
232
|
type: 'string',
|
|
233
233
|
name: 'name',
|
|
234
234
|
header: i18next.t('field.ro'),
|
|
235
|
+
imex: { header: i18next.t('field.ro'), key: 'name', width: 30, type: 'string' },
|
|
235
236
|
sortable: true,
|
|
236
237
|
width: 150
|
|
237
238
|
},
|
|
@@ -239,6 +240,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
239
240
|
type: 'object',
|
|
240
241
|
name: 'bizplace',
|
|
241
242
|
header: i18next.t('field.company'),
|
|
243
|
+
imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 30, type: 'string' },
|
|
242
244
|
sortable: true,
|
|
243
245
|
width: 250
|
|
244
246
|
},
|
|
@@ -246,6 +248,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
246
248
|
type: 'string',
|
|
247
249
|
name: 'refNo',
|
|
248
250
|
header: i18next.t('field.ref_no'),
|
|
251
|
+
imex: { header: i18next.t('field.ref_no'), key: 'refNo', width: 20, type: 'string' },
|
|
249
252
|
sortable: true,
|
|
250
253
|
width: 150
|
|
251
254
|
},
|
|
@@ -253,6 +256,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
253
256
|
type: 'string',
|
|
254
257
|
name: 'refNo2',
|
|
255
258
|
header: i18next.t('field.ref_no_2'),
|
|
259
|
+
imex: { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 20, type: 'string' },
|
|
256
260
|
sortable: true,
|
|
257
261
|
width: 150
|
|
258
262
|
},
|
|
@@ -260,6 +264,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
260
264
|
type: 'string',
|
|
261
265
|
name: 'refNo3',
|
|
262
266
|
header: i18next.t('field.ref_no_3'),
|
|
267
|
+
imex: { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 20, type: 'string' },
|
|
263
268
|
sortable: true,
|
|
264
269
|
width: 150
|
|
265
270
|
},
|
|
@@ -267,6 +272,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
267
272
|
type: 'date',
|
|
268
273
|
name: 'releaseDate',
|
|
269
274
|
header: i18next.t('field.release_date'),
|
|
275
|
+
imex: { header: i18next.t('field.release_date'), key: 'releaseDate', width: 20, type: 'string' },
|
|
270
276
|
sortable: true,
|
|
271
277
|
width: 120
|
|
272
278
|
},
|
|
@@ -274,7 +280,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
274
280
|
type: 'boolean',
|
|
275
281
|
name: 'exportOption',
|
|
276
282
|
header: i18next.t('field.export_option'),
|
|
277
|
-
|
|
283
|
+
imex: { header: i18next.t('field.export_option'), key: 'exportOption', width: 20, type: 'string' },
|
|
278
284
|
sortable: true,
|
|
279
285
|
width: 60
|
|
280
286
|
},
|
|
@@ -282,7 +288,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
282
288
|
type: 'boolean',
|
|
283
289
|
name: 'ownTransport',
|
|
284
290
|
header: i18next.t('field.own_transport'),
|
|
285
|
-
|
|
291
|
+
imex: { header: i18next.t('field.own_transport'), key: 'ownTransport', width: 20, type: 'string' },
|
|
286
292
|
sortable: true,
|
|
287
293
|
width: 60
|
|
288
294
|
},
|
|
@@ -290,19 +296,21 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
290
296
|
type: 'boolean',
|
|
291
297
|
name: 'crossDocking',
|
|
292
298
|
header: i18next.t('field.cross_docking'),
|
|
293
|
-
|
|
299
|
+
imex: { header: i18next.t('field.cross_docking'), key: 'crossDocking', width: 20, type: 'string' },
|
|
294
300
|
width: 60
|
|
295
301
|
},
|
|
296
302
|
{
|
|
297
303
|
type: 'object',
|
|
298
304
|
name: 'arrivalNotice',
|
|
299
305
|
header: i18next.t('field.gan'),
|
|
306
|
+
imex: { header: i18next.t('field.gan'), key: 'arrivalNotice.name', width: 30, type: 'string' },
|
|
300
307
|
width: 160
|
|
301
308
|
},
|
|
302
309
|
{
|
|
303
310
|
type: 'string',
|
|
304
311
|
name: 'status',
|
|
305
312
|
header: i18next.t('field.status'),
|
|
313
|
+
imex: { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
|
|
306
314
|
sortable: true,
|
|
307
315
|
width: 120
|
|
308
316
|
},
|
|
@@ -310,6 +318,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
310
318
|
type: 'datetime',
|
|
311
319
|
name: 'createdAt',
|
|
312
320
|
header: i18next.t('field.created_at'),
|
|
321
|
+
imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
|
|
313
322
|
sortable: true,
|
|
314
323
|
width: 160
|
|
315
324
|
},
|
|
@@ -317,6 +326,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
317
326
|
type: 'datetime',
|
|
318
327
|
name: 'updatedAt',
|
|
319
328
|
header: i18next.t('field.updated_at'),
|
|
329
|
+
imex: { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'datetime' },
|
|
320
330
|
sortable: true,
|
|
321
331
|
width: 160
|
|
322
332
|
},
|
|
@@ -324,6 +334,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
324
334
|
type: 'object',
|
|
325
335
|
name: 'creator',
|
|
326
336
|
header: i18next.t('field.created_by'),
|
|
337
|
+
imex: { header: i18next.t('field.created_by'), key: 'creator.name', width: 30, type: 'string' },
|
|
327
338
|
sortable: true,
|
|
328
339
|
width: 200
|
|
329
340
|
}
|
|
@@ -343,7 +354,7 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
343
354
|
return this.config.columns
|
|
344
355
|
}
|
|
345
356
|
|
|
346
|
-
async fetchHandler({ page, limit, sorters = [
|
|
357
|
+
async fetchHandler({ page, limit, sorters = [] }) {
|
|
347
358
|
const response = await client.query({
|
|
348
359
|
query: gql`
|
|
349
360
|
query releaseGoodRequests($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
|
|
@@ -463,7 +474,36 @@ class B2bOrderList extends localize(i18next)(PageView) {
|
|
|
463
474
|
}
|
|
464
475
|
|
|
465
476
|
_exportableData() {
|
|
466
|
-
|
|
477
|
+
let records = []
|
|
478
|
+
if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
|
|
479
|
+
records = this.dataGrist.selected
|
|
480
|
+
} else {
|
|
481
|
+
records = this.dataGrist.data.records
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
var headerSetting = this.dataGrist._config.columns
|
|
485
|
+
.filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
|
|
486
|
+
.map(column => {
|
|
487
|
+
return column.imex
|
|
488
|
+
})
|
|
489
|
+
|
|
490
|
+
var data = records.map(item => {
|
|
491
|
+
return {
|
|
492
|
+
id: item.id,
|
|
493
|
+
...this._columns
|
|
494
|
+
.filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
|
|
495
|
+
.reduce((record, column) => {
|
|
496
|
+
record[column.imex.key] = column.imex.key
|
|
497
|
+
.split('.')
|
|
498
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
|
499
|
+
if (column.type === 'datetime') {
|
|
500
|
+
record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
|
|
501
|
+
}
|
|
502
|
+
return record
|
|
503
|
+
}, {})
|
|
504
|
+
}
|
|
505
|
+
})
|
|
506
|
+
return { header: headerSetting, data: data }
|
|
467
507
|
}
|
|
468
508
|
}
|
|
469
509
|
|
|
@@ -231,6 +231,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
231
231
|
type: 'string',
|
|
232
232
|
name: 'name',
|
|
233
233
|
header: i18next.t('field.ro'),
|
|
234
|
+
imex: { header: i18next.t('field.ro'), key: 'name', width: 30, type: 'string' },
|
|
234
235
|
sortable: true,
|
|
235
236
|
width: 150
|
|
236
237
|
},
|
|
@@ -238,6 +239,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
238
239
|
type: 'object',
|
|
239
240
|
name: 'bizplace',
|
|
240
241
|
header: i18next.t('field.company'),
|
|
242
|
+
imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 30, type: 'string' },
|
|
241
243
|
sortable: true,
|
|
242
244
|
width: 200
|
|
243
245
|
},
|
|
@@ -245,6 +247,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
245
247
|
type: 'string',
|
|
246
248
|
name: 'refNo',
|
|
247
249
|
header: i18next.t('field.ref_no'),
|
|
250
|
+
imex: { header: i18next.t('field.ref_no'), key: 'refNo', width: 20, type: 'string' },
|
|
248
251
|
sortable: true,
|
|
249
252
|
width: 160
|
|
250
253
|
},
|
|
@@ -252,6 +255,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
252
255
|
type: 'string',
|
|
253
256
|
name: 'refNo2',
|
|
254
257
|
header: i18next.t('field.ref_no_2'),
|
|
258
|
+
imex: { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 20, type: 'string' },
|
|
255
259
|
sortable: true,
|
|
256
260
|
width: 160
|
|
257
261
|
},
|
|
@@ -259,6 +263,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
259
263
|
type: 'string',
|
|
260
264
|
name: 'refNo3',
|
|
261
265
|
header: i18next.t('field.ref_no_3'),
|
|
266
|
+
imex: { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 20, type: 'string' },
|
|
262
267
|
sortable: true,
|
|
263
268
|
width: 160
|
|
264
269
|
},
|
|
@@ -266,6 +271,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
266
271
|
type: 'date',
|
|
267
272
|
name: 'releaseDate',
|
|
268
273
|
header: i18next.t('field.release_date'),
|
|
274
|
+
imex: { header: i18next.t('field.release_date'), key: 'releaseDate', width: 20, type: 'string' },
|
|
269
275
|
sortable: true,
|
|
270
276
|
width: 120
|
|
271
277
|
},
|
|
@@ -273,7 +279,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
273
279
|
type: 'boolean',
|
|
274
280
|
name: 'exportOption',
|
|
275
281
|
header: i18next.t('field.export_option'),
|
|
276
|
-
|
|
282
|
+
imex: { header: i18next.t('field.export_option'), key: 'exportOption', width: 20, type: 'string' },
|
|
277
283
|
sortable: true,
|
|
278
284
|
width: 60
|
|
279
285
|
},
|
|
@@ -281,7 +287,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
281
287
|
type: 'boolean',
|
|
282
288
|
name: 'ownTransport',
|
|
283
289
|
header: i18next.t('field.own_transport'),
|
|
284
|
-
|
|
290
|
+
imex: { header: i18next.t('field.own_transport'), key: 'ownTransport', width: 20, type: 'string' },
|
|
285
291
|
sortable: true,
|
|
286
292
|
width: 60
|
|
287
293
|
},
|
|
@@ -289,19 +295,21 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
289
295
|
type: 'boolean',
|
|
290
296
|
name: 'crossDocking',
|
|
291
297
|
header: i18next.t('field.cross_docking'),
|
|
292
|
-
|
|
298
|
+
imex: { header: i18next.t('field.cross_docking'), key: 'crossDocking', width: 20, type: 'string' },
|
|
293
299
|
width: 60
|
|
294
300
|
},
|
|
295
301
|
{
|
|
296
302
|
type: 'object',
|
|
297
303
|
name: 'arrivalNotice',
|
|
298
304
|
header: i18next.t('field.gan'),
|
|
305
|
+
imex: { header: i18next.t('field.gan'), key: 'arrivalNotice.name', width: 30, type: 'string' },
|
|
299
306
|
width: 160
|
|
300
307
|
},
|
|
301
308
|
{
|
|
302
309
|
type: 'string',
|
|
303
310
|
name: 'status',
|
|
304
311
|
header: i18next.t('field.status'),
|
|
312
|
+
imex: { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
|
|
305
313
|
sortable: true,
|
|
306
314
|
width: 120
|
|
307
315
|
},
|
|
@@ -309,6 +317,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
309
317
|
type: 'datetime',
|
|
310
318
|
name: 'createdAt',
|
|
311
319
|
header: i18next.t('field.created_at'),
|
|
320
|
+
imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
|
|
312
321
|
sortable: true,
|
|
313
322
|
width: 200
|
|
314
323
|
},
|
|
@@ -316,6 +325,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
316
325
|
type: 'datetime',
|
|
317
326
|
name: 'updatedAt',
|
|
318
327
|
header: i18next.t('field.updated_at'),
|
|
328
|
+
imex: { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'datetime' },
|
|
319
329
|
sortable: true,
|
|
320
330
|
width: 160
|
|
321
331
|
},
|
|
@@ -323,6 +333,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
323
333
|
type: 'object',
|
|
324
334
|
name: 'acceptedBy',
|
|
325
335
|
header: i18next.t('field.accepted_by'),
|
|
336
|
+
imex: { header: i18next.t('field.accepted_by'), key: 'acceptedBy.name', width: 30, type: 'string' },
|
|
326
337
|
sortable: true,
|
|
327
338
|
width: 200
|
|
328
339
|
}
|
|
@@ -338,7 +349,7 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
338
349
|
return this.shadowRoot.querySelector('data-grist')
|
|
339
350
|
}
|
|
340
351
|
|
|
341
|
-
async fetchHandler({ page, limit, sorters = [
|
|
352
|
+
async fetchHandler({ page, limit, sorters = [] }) {
|
|
342
353
|
const response = await client.query({
|
|
343
354
|
query: gql`
|
|
344
355
|
query releaseGoodRequests($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
|
|
@@ -480,7 +491,36 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
|
|
|
480
491
|
}
|
|
481
492
|
|
|
482
493
|
_exportableData() {
|
|
483
|
-
|
|
494
|
+
let records = []
|
|
495
|
+
if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
|
|
496
|
+
records = this.dataGrist.selected
|
|
497
|
+
} else {
|
|
498
|
+
records = this.dataGrist.data.records
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
var headerSetting = this.dataGrist._config.columns
|
|
502
|
+
.filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
|
|
503
|
+
.map(column => {
|
|
504
|
+
return column.imex
|
|
505
|
+
})
|
|
506
|
+
|
|
507
|
+
var data = records.map(item => {
|
|
508
|
+
return {
|
|
509
|
+
id: item.id,
|
|
510
|
+
...this._columns
|
|
511
|
+
.filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
|
|
512
|
+
.reduce((record, column) => {
|
|
513
|
+
record[column.imex.key] = column.imex.key
|
|
514
|
+
.split('.')
|
|
515
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
|
516
|
+
if (column.type === 'datetime') {
|
|
517
|
+
record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
|
|
518
|
+
}
|
|
519
|
+
return record
|
|
520
|
+
}, {})
|
|
521
|
+
}
|
|
522
|
+
})
|
|
523
|
+
return { header: headerSetting, data: data }
|
|
484
524
|
}
|
|
485
525
|
}
|
|
486
526
|
|
|
@@ -113,18 +113,6 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
113
113
|
],
|
|
114
114
|
props: { searchOper: 'eq' }
|
|
115
115
|
},
|
|
116
|
-
{
|
|
117
|
-
label: i18next.t('field.release_date'),
|
|
118
|
-
name: 'releaseDate',
|
|
119
|
-
type: 'date',
|
|
120
|
-
props: { searchOper: 'i_like' }
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
label: i18next.t('field.ref_no'),
|
|
124
|
-
name: 'refNo',
|
|
125
|
-
type: 'text',
|
|
126
|
-
props: { searchOper: 'i_like' }
|
|
127
|
-
},
|
|
128
116
|
{
|
|
129
117
|
label: i18next.t('field.status'),
|
|
130
118
|
name: 'status',
|
|
@@ -136,6 +124,52 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
136
124
|
})
|
|
137
125
|
],
|
|
138
126
|
props: { searchOper: 'eq' }
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: i18next.t('field.ref_no'),
|
|
130
|
+
name: 'refNo',
|
|
131
|
+
type: 'text',
|
|
132
|
+
props: { searchOper: 'i_like' }
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
label: i18next.t('field.ref_no_2'),
|
|
136
|
+
name: 'refNo2',
|
|
137
|
+
type: 'text',
|
|
138
|
+
props: { searchOper: 'i_like' }
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
label: i18next.t('field.ref_no_3'),
|
|
142
|
+
name: 'refNo3',
|
|
143
|
+
type: 'text',
|
|
144
|
+
props: { searchOper: 'i_like' }
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
label: i18next.t('field.from'),
|
|
148
|
+
name: 'fromDate',
|
|
149
|
+
type: 'date',
|
|
150
|
+
props: {
|
|
151
|
+
searchOper: 'eq'
|
|
152
|
+
},
|
|
153
|
+
value: (() => {
|
|
154
|
+
let date = new Date()
|
|
155
|
+
date.setMonth(date.getMonth() - 6)
|
|
156
|
+
return date.toISOString().split('T')[0]
|
|
157
|
+
})(),
|
|
158
|
+
handlers: { change: this._modifyDateRange.bind(this) }
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
label: i18next.t('field.to'),
|
|
162
|
+
name: 'toDate',
|
|
163
|
+
type: 'date',
|
|
164
|
+
props: {
|
|
165
|
+
searchOper: 'eq',
|
|
166
|
+
min: (() => {
|
|
167
|
+
let date = new Date()
|
|
168
|
+
date.setMonth(date.getMonth() - 6)
|
|
169
|
+
return date.toISOString().split('T')[0]
|
|
170
|
+
})()
|
|
171
|
+
},
|
|
172
|
+
value: new Date().toISOString().split('T')[0]
|
|
139
173
|
}
|
|
140
174
|
]
|
|
141
175
|
|
|
@@ -168,6 +202,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
168
202
|
type: 'string',
|
|
169
203
|
name: 'name',
|
|
170
204
|
header: i18next.t('field.ro'),
|
|
205
|
+
imex: { header: i18next.t('field.ro'), key: 'name', width: 25, type: 'string' },
|
|
171
206
|
sortable: true,
|
|
172
207
|
width: 150
|
|
173
208
|
},
|
|
@@ -175,6 +210,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
175
210
|
type: 'object',
|
|
176
211
|
name: 'bizplace',
|
|
177
212
|
header: i18next.t('field.company'),
|
|
213
|
+
imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 25, type: 'string' },
|
|
178
214
|
sortable: true,
|
|
179
215
|
width: 200
|
|
180
216
|
},
|
|
@@ -182,6 +218,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
182
218
|
type: 'string',
|
|
183
219
|
name: 'refNo',
|
|
184
220
|
header: i18next.t('field.ref_no'),
|
|
221
|
+
imex: { header: i18next.t('field.ref_no'), key: 'refNo', width: 25, type: 'string' },
|
|
185
222
|
sortable: true,
|
|
186
223
|
width: 160
|
|
187
224
|
},
|
|
@@ -189,20 +226,52 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
189
226
|
type: 'string',
|
|
190
227
|
name: 'refNo2',
|
|
191
228
|
header: i18next.t('field.ref_no_2'),
|
|
229
|
+
imex: { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
|
|
192
230
|
sortable: true,
|
|
193
231
|
width: 160
|
|
194
232
|
},
|
|
233
|
+
{
|
|
234
|
+
type: 'string',
|
|
235
|
+
name: 'refNo3',
|
|
236
|
+
header: i18next.t('field.ref_no_3'),
|
|
237
|
+
imex: { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
|
|
238
|
+
sortable: true,
|
|
239
|
+
width: 160
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
type: 'string',
|
|
243
|
+
name: 'postalCode',
|
|
244
|
+
header: i18next.t('field.postal_code'),
|
|
245
|
+
sortable: true,
|
|
246
|
+
width: 100
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
type: 'string',
|
|
250
|
+
name: 'transporter',
|
|
251
|
+
header: i18next.t('field.courier'),
|
|
252
|
+
sortable: true,
|
|
253
|
+
width: 120
|
|
254
|
+
},
|
|
195
255
|
{
|
|
196
256
|
type: 'date',
|
|
197
257
|
name: 'releaseDate',
|
|
198
258
|
header: i18next.t('field.release_date'),
|
|
259
|
+
imex: { header: i18next.t('field.release_date'), key: 'releaseDate', width: 25, type: 'string' },
|
|
199
260
|
sortable: true,
|
|
200
261
|
width: 120
|
|
201
262
|
},
|
|
263
|
+
// {
|
|
264
|
+
// type: 'string',
|
|
265
|
+
// name: 'marketplaceOrderStatus',
|
|
266
|
+
// header: i18next.t('field.marketplace_order_status'),
|
|
267
|
+
// sortable: true,
|
|
268
|
+
// width: 120
|
|
269
|
+
// },
|
|
202
270
|
{
|
|
203
271
|
type: 'string',
|
|
204
272
|
name: 'status',
|
|
205
273
|
header: i18next.t('field.status'),
|
|
274
|
+
imex: { header: i18next.t('field.grn_status'), key: 'status', width: 25, type: 'string' },
|
|
206
275
|
sortable: true,
|
|
207
276
|
width: 120
|
|
208
277
|
},
|
|
@@ -210,6 +279,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
210
279
|
type: 'datetime',
|
|
211
280
|
name: 'updatedAt',
|
|
212
281
|
header: i18next.t('field.updated_at'),
|
|
282
|
+
imex: { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 25, type: 'datetime' },
|
|
213
283
|
sortable: true,
|
|
214
284
|
width: 160
|
|
215
285
|
},
|
|
@@ -217,6 +287,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
217
287
|
type: 'object',
|
|
218
288
|
name: 'acceptedBy',
|
|
219
289
|
header: i18next.t('field.accepted_by'),
|
|
290
|
+
imex: { header: i18next.t('field.accepted_by'), key: 'acceptedBy.name', width: 25, type: 'string' },
|
|
220
291
|
sortable: true,
|
|
221
292
|
width: 200
|
|
222
293
|
}
|
|
@@ -232,13 +303,19 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
232
303
|
return this.shadowRoot.querySelector('data-grist')
|
|
233
304
|
}
|
|
234
305
|
|
|
235
|
-
async fetchHandler({ page, limit, sorters = [
|
|
306
|
+
async fetchHandler({ page, limit, sorters = [] }) {
|
|
236
307
|
const response = await client.query({
|
|
237
308
|
query: gql`
|
|
238
309
|
query releaseGoodRequests($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
|
|
239
310
|
releaseGoodRequests(filters: $filters, pagination: $pagination, sortings: $sortings) {
|
|
240
311
|
items {
|
|
241
312
|
id
|
|
313
|
+
attentionTo
|
|
314
|
+
deliveryAddress1
|
|
315
|
+
phone1
|
|
316
|
+
postalCode
|
|
317
|
+
marketplaceOrderStatus
|
|
318
|
+
transporter
|
|
242
319
|
bizplace {
|
|
243
320
|
id
|
|
244
321
|
name
|
|
@@ -250,12 +327,6 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
250
327
|
refNo
|
|
251
328
|
refNo2
|
|
252
329
|
refNo3
|
|
253
|
-
ownTransport
|
|
254
|
-
crossDocking
|
|
255
|
-
arrivalNotice {
|
|
256
|
-
name
|
|
257
|
-
}
|
|
258
|
-
exportOption
|
|
259
330
|
updatedAt
|
|
260
331
|
acceptedBy {
|
|
261
332
|
id
|
|
@@ -277,7 +348,12 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
277
348
|
if (!response.errors) {
|
|
278
349
|
return {
|
|
279
350
|
total: response.data.releaseGoodRequests.total || 0,
|
|
280
|
-
records: response.data.releaseGoodRequests.items || []
|
|
351
|
+
records: (response.data.releaseGoodRequests.items || []).map(item => {
|
|
352
|
+
return {
|
|
353
|
+
...item,
|
|
354
|
+
bizplaceName: item.bizplace.name
|
|
355
|
+
}
|
|
356
|
+
})
|
|
281
357
|
}
|
|
282
358
|
}
|
|
283
359
|
}
|
|
@@ -314,6 +390,7 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
314
390
|
this.dataGrist.selected
|
|
315
391
|
.filter(
|
|
316
392
|
record =>
|
|
393
|
+
record.status === ORDER_STATUS.PENDING_WORKSHEET.value ||
|
|
317
394
|
record.status === ORDER_STATUS.READY_TO_PICK.value ||
|
|
318
395
|
record.status === ORDER_STATUS.PICKING.value ||
|
|
319
396
|
record.status === ORDER_STATUS.PACKING.value ||
|
|
@@ -385,8 +462,91 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
|
|
|
385
462
|
)
|
|
386
463
|
}
|
|
387
464
|
|
|
465
|
+
async _exportableData() {
|
|
466
|
+
try {
|
|
467
|
+
let data = []
|
|
468
|
+
|
|
469
|
+
var headerSetting = [
|
|
470
|
+
{ header: i18next.t('field.ro'), key: 'name', width: 25, type: 'string' },
|
|
471
|
+
{ header: i18next.t('field.company'), key: 'bizplaceName', width: 25, type: 'string' },
|
|
472
|
+
{ header: i18next.t('field.ref_no'), key: 'refNo', width: 25, type: 'string' },
|
|
473
|
+
{ header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
|
|
474
|
+
{ header: i18next.t('field.release_date'), key: 'releaseDate', width: 30, type: 'date' },
|
|
475
|
+
{ header: i18next.t('field.postal_code'), key: 'postalCode', width: 30, type: 'string' },
|
|
476
|
+
{
|
|
477
|
+
header: i18next.t('field.marketplace_order_status'),
|
|
478
|
+
key: 'marketplaceOrderStatus',
|
|
479
|
+
width: 30,
|
|
480
|
+
type: 'string'
|
|
481
|
+
},
|
|
482
|
+
{ header: i18next.t('field.warehouse_status'), key: 'status', width: 30, type: 'string' },
|
|
483
|
+
{ header: i18next.t('field.courier'), key: 'transporter', width: 30, type: 'string' },
|
|
484
|
+
{ header: i18next.t('field.delivery_address'), key: 'deliveryAddress1', width: 30, type: 'string' },
|
|
485
|
+
{ header: i18next.t('field.attention_to'), key: 'attentionTo', width: 30, type: 'string' },
|
|
486
|
+
{ header: i18next.t('field.phone'), key: 'phone1', width: 30, type: 'string' }
|
|
487
|
+
]
|
|
488
|
+
|
|
489
|
+
if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
|
|
490
|
+
data = this.dataGrist.selected
|
|
491
|
+
} else {
|
|
492
|
+
const bizplaceFilters = (await this.searchForm.getQueryFilters()).filter(x => x.name === 'bizplaceId')
|
|
493
|
+
if (bizplaceFilters.length == 0) {
|
|
494
|
+
throw new Error(`Please select a customer for export.`)
|
|
495
|
+
}
|
|
496
|
+
data = await this.fetchHandler({ page: 1, limit: 9999999 })
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
return { header: headerSetting, data }
|
|
500
|
+
} catch (e) {
|
|
501
|
+
this._showToast(e)
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
_modifyDateRange(e) {
|
|
506
|
+
const fromDate = e.currentTarget.value
|
|
507
|
+
|
|
508
|
+
if (this._toDateInput.value < fromDate) this._toDateInput.value = fromDate
|
|
509
|
+
|
|
510
|
+
let min = new Date(fromDate)
|
|
511
|
+
let today = new Date()
|
|
512
|
+
today.setHours(0, 0, 0, 0)
|
|
513
|
+
|
|
514
|
+
min = min.toISOString().split('T')[0]
|
|
515
|
+
|
|
516
|
+
this._toDateInput.min = min
|
|
517
|
+
}
|
|
518
|
+
|
|
388
519
|
_exportableData() {
|
|
389
|
-
|
|
520
|
+
let records = []
|
|
521
|
+
if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
|
|
522
|
+
records = this.dataGrist.selected
|
|
523
|
+
} else {
|
|
524
|
+
records = this.dataGrist.data.records
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
var headerSetting = this.dataGrist._config.columns
|
|
528
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
|
529
|
+
.map(column => {
|
|
530
|
+
return column.imex
|
|
531
|
+
})
|
|
532
|
+
|
|
533
|
+
var data = records.map(item => {
|
|
534
|
+
return {
|
|
535
|
+
id: item.id,
|
|
536
|
+
...this._columns
|
|
537
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
|
538
|
+
.reduce((record, column) => {
|
|
539
|
+
record[column.imex.key] = column.imex.key
|
|
540
|
+
.split('.')
|
|
541
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
|
542
|
+
if (column.type === 'datetime') {
|
|
543
|
+
record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
|
|
544
|
+
}
|
|
545
|
+
return record
|
|
546
|
+
}, {})
|
|
547
|
+
}
|
|
548
|
+
})
|
|
549
|
+
return { header: headerSetting, data: data }
|
|
390
550
|
}
|
|
391
551
|
}
|
|
392
552
|
|
|
@@ -148,6 +148,26 @@ class BulkPrintPackingList extends localize(i18next)(PageView) {
|
|
|
148
148
|
|
|
149
149
|
<label>${i18next.t('label.release_date')}</label>
|
|
150
150
|
<input name="releaseDate" type="date" value="${releaseOrder.releaseDate}" readonly />
|
|
151
|
+
|
|
152
|
+
<label ?hidden="${!!!releaseOrder?.attentionTo}">${i18next.t('label.attention_to')}</label>
|
|
153
|
+
<input
|
|
154
|
+
name="attentionto"
|
|
155
|
+
.value="${releaseOrder?.attentionTo}"
|
|
156
|
+
?hidden="${!!!releaseOrder?.attentionTo}"
|
|
157
|
+
readonly
|
|
158
|
+
/>
|
|
159
|
+
|
|
160
|
+
<label ?hidden="${!!!releaseOrder?.phone1}">${i18next.t('label.phone_no')}</label>
|
|
161
|
+
<input name="phone1" .value="${releaseOrder?.phone1}" ?hidden="${!!!releaseOrder?.phone1}" readonly />
|
|
162
|
+
|
|
163
|
+
<label ?hidden="${!!!releaseOrder?.deliveryAddress1}">${i18next.t('label.delivery_address')}</label>
|
|
164
|
+
<textarea
|
|
165
|
+
name="deliveryAddress1"
|
|
166
|
+
.value="${releaseOrder?.deliveryAddress1}"
|
|
167
|
+
?hidden="${!!!releaseOrder?.deliveryAddress1}"
|
|
168
|
+
rows="5"
|
|
169
|
+
readonly
|
|
170
|
+
></textarea>
|
|
151
171
|
</fieldset>
|
|
152
172
|
</form>
|
|
153
173
|
|
|
@@ -242,6 +262,9 @@ class BulkPrintPackingList extends localize(i18next)(PageView) {
|
|
|
242
262
|
refNo2
|
|
243
263
|
refNo3
|
|
244
264
|
releaseDate
|
|
265
|
+
attentionTo
|
|
266
|
+
phone1
|
|
267
|
+
deliveryAddress1
|
|
245
268
|
bizplace {
|
|
246
269
|
id
|
|
247
270
|
name
|