@things-factory/operato-wms 3.7.15 → 3.8.3

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 (88) hide show
  1. package/client/pages/adjustment/transfer-inventory.js +390 -158
  2. package/client/pages/bulk-operation/bulk-operation.js +316 -0
  3. package/client/pages/bulk-operation/validate-ro-popup.js +445 -0
  4. package/client/pages/components/select-product-popup.js +1 -1
  5. package/client/pages/constants/inventory.js +1 -0
  6. package/client/pages/constants/location.js +33 -6
  7. package/client/pages/constants/worksheet.js +2 -2
  8. package/client/pages/inbound/inbound-worksheet.js +81 -15
  9. package/client/pages/inbound/putaway-product.js +61 -9
  10. package/client/pages/inbound/putaway-worksheet-generate-popup.js +29 -5
  11. package/client/pages/inbound/unload-product.js +80 -19
  12. package/client/pages/inbound/worksheet-putaway-return.js +14 -5
  13. package/client/pages/inbound/worksheet-putaway.js +13 -8
  14. package/client/pages/inbound/worksheet-unloading-return.js +14 -5
  15. package/client/pages/inventory/inventory-adjustment-approval.js +15 -23
  16. package/client/pages/inventory/inventory-adjustment.js +84 -80
  17. package/client/pages/inventory/inventory-by-product-detail.js +1 -1
  18. package/client/pages/inventory/inventory-by-product.js +1 -1
  19. package/client/pages/inventory/inventory-history-by-pallet.js +1 -1
  20. package/client/pages/inventory/inventory-history.js +2 -2
  21. package/client/pages/inventory/onhand-inventory.js +1 -2
  22. package/client/pages/inventory-check/create-cycle-count.js +1 -6
  23. package/client/pages/master/location-list.js +58 -17
  24. package/client/pages/order/arrival-notice/arrival-notice-detail.js +15 -8
  25. package/client/pages/order/arrival-notice/arrival-notice-list.js +87 -6
  26. package/client/pages/order/arrival-notice/arrival-notice-requests.js +83 -6
  27. package/client/pages/order/arrival-notice/create-arrival-notice.js +23 -2
  28. package/client/pages/order/arrival-notice/duplicate-arrival-notice.js +290 -25
  29. package/client/pages/order/arrival-notice/edit-product-popup.js +36 -5
  30. package/client/pages/order/release-order/b2c/b2c-order-requests.js +60 -0
  31. package/client/pages/order/release-order/batch-picking-popup.js +18 -1
  32. package/client/pages/order/release-order/create-release-order.js +2 -2
  33. package/client/pages/order/release-order/release-extra-product-popup.js +12 -4
  34. package/client/pages/order/release-order/release-order-detail.js +1 -1
  35. package/client/pages/order/return-order/create-return-order.js +1 -1
  36. package/client/pages/order/return-order/return-order-detail.js +6 -5
  37. package/client/pages/order/transport-order/delivery-order-list.js +4 -1
  38. package/client/pages/outbound/inventory-assign-popup.js +1 -1
  39. package/client/pages/outbound/merged-outbound-worksheet.js +9 -5
  40. package/client/pages/outbound/picking-product.js +223 -184
  41. package/client/pages/outbound/picking-replacement-popup.js +2 -2
  42. package/client/pages/outbound/single-outbound-worksheet.js +47 -1
  43. package/client/pages/outbound/worksheet-loading.js +14 -5
  44. package/client/pages/outbound/worksheet-picking.js +10 -5
  45. package/client/pages/report/custom-elccl/elccl-inventory-report.js +31 -30
  46. package/client/pages/report/custom-elccl/elccl-inventory-summary-report.js +23 -26
  47. package/client/pages/report/inventory-pallet-storage-report.js +11 -10
  48. package/client/pages/report/inventory-report.js +41 -43
  49. package/client/pages/report/inventory-summary-report.js +25 -28
  50. package/client/pages/vas/print-product-label.js +3 -1
  51. package/client/route.js +5 -0
  52. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +1 -1
  53. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  54. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +1 -1
  55. package/dist-server/graphql/resolvers/index.js +3 -1
  56. package/dist-server/graphql/resolvers/index.js.map +1 -1
  57. package/dist-server/graphql/resolvers/reports/product-label-report.js +1 -0
  58. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -1
  59. package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
  60. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
  61. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +20 -0
  62. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
  63. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +1 -1
  64. package/dist-server/graphql/types/index.js +5 -2
  65. package/dist-server/graphql/types/index.js.map +1 -1
  66. package/dist-server/graphql/types/shipping-provider/index.js +10 -0
  67. package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
  68. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
  69. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
  70. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
  71. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
  72. package/package.json +37 -37
  73. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +4 -2
  74. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +1 -1
  75. package/server/graphql/resolvers/index.ts +3 -1
  76. package/server/graphql/resolvers/reports/product-label-report.ts +1 -0
  77. package/server/graphql/resolvers/shipping-provider/index.ts +5 -0
  78. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +20 -0
  79. package/server/graphql/types/custom/elccl/elccl-inventory-report.ts +1 -1
  80. package/server/graphql/types/index.ts +5 -2
  81. package/server/graphql/types/shipping-provider/index.ts +8 -0
  82. package/server/graphql/types/shipping-provider/shipping-provider-list.ts +7 -0
  83. package/server/graphql/types/shipping-provider/shipping-provider.ts +7 -0
  84. package/things-factory.config.js +6 -0
  85. package/translations/en.json +28 -0
  86. package/translations/ko.json +85 -36
  87. package/translations/ms.json +86 -37
  88. package/translations/zh.json +99 -51
@@ -214,6 +214,12 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
214
214
  type: 'object',
215
215
  name: 'releaseGood',
216
216
  header: i18next.t('field.release_good_no'),
217
+ imex: {
218
+ header: i18next.t('field.release_good_no'),
219
+ key: 'releaseGood.name',
220
+ width: 30,
221
+ type: 'string'
222
+ },
217
223
  sortable: true,
218
224
  width: 150
219
225
  },
@@ -221,6 +227,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
221
227
  type: 'string',
222
228
  name: 'releaseRefNo',
223
229
  header: i18next.t('field.ref_no'),
230
+ imex: { header: i18next.t('field.ref_no'), key: 'releaseRefNo', width: 30, type: 'array' },
224
231
  sortable: true,
225
232
  width: 180
226
233
  },
@@ -228,24 +235,28 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
228
235
  type: 'boolean',
229
236
  name: 'crossDocking',
230
237
  header: i18next.t('field.cross_docking'),
238
+ imex: { header: i18next.t('field.cross_docking'), key: 'crossDocking', width: 20, type: 'string' },
231
239
  width: 100
232
240
  },
233
241
  {
234
242
  type: 'boolean',
235
243
  name: 'courierOption',
236
244
  header: i18next.t('field.courier'),
245
+ imex: { header: i18next.t('field.courier'), key: 'courierOption', width: 20, type: 'string' },
237
246
  width: 60
238
247
  },
239
248
  {
240
249
  type: 'boolean',
241
250
  name: 'packingOption',
242
251
  header: i18next.t('field.packing'),
252
+ imex: { header: i18next.t('field.packing'), key: 'packingOption', width: 20, type: 'string' },
243
253
  width: 60
244
254
  },
245
255
  {
246
256
  type: 'object',
247
257
  name: 'bizplace',
248
258
  header: i18next.t('field.company'),
259
+ imex: { header: i18next.t('field.company'), key: 'bizplace.name', width: 20, type: 'string' },
249
260
  sortable: true,
250
261
  width: 240
251
262
  },
@@ -253,6 +264,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
253
264
  type: 'string',
254
265
  name: 'type',
255
266
  header: i18next.t('field.type'),
267
+ imex: { header: i18next.t('field.type'), key: 'type', width: 20, type: 'string' },
256
268
  sortable: true,
257
269
  width: 100
258
270
  },
@@ -260,6 +272,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
260
272
  type: 'string',
261
273
  name: 'status',
262
274
  header: i18next.t('field.status'),
275
+ imex: { header: i18next.t('field.status'), key: 'status', width: 20, type: 'string' },
263
276
  sortable: true,
264
277
  width: 100
265
278
  },
@@ -267,6 +280,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
267
280
  type: 'datetime',
268
281
  name: 'createdAt',
269
282
  header: i18next.t('field.created_at'),
283
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 20, type: 'string' },
270
284
  sortable: true,
271
285
  width: 200
272
286
  },
@@ -274,6 +288,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
274
288
  type: 'datetime',
275
289
  name: 'startedAt',
276
290
  header: i18next.t('field.started_at'),
291
+ imex: { header: i18next.t('field.started_at'), key: 'startedAt', width: 30, type: 'string' },
277
292
  sortable: true,
278
293
  width: 160
279
294
  },
@@ -281,6 +296,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
281
296
  type: 'datetime',
282
297
  name: 'endedAt',
283
298
  header: i18next.t('field.ended_at'),
299
+ imex: { header: i18next.t('field.ended_at'), key: 'endedAt', width: 30, type: 'string' },
284
300
  sortable: true,
285
301
  width: 160
286
302
  },
@@ -288,6 +304,7 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
288
304
  type: 'object',
289
305
  name: 'updater',
290
306
  header: i18next.t('field.updater'),
307
+ imex: { header: i18next.t('field.updater'), key: 'updater.name', width: 30, type: 'string' },
291
308
  sortable: true,
292
309
  width: 150
293
310
  }
@@ -446,7 +463,36 @@ class SingleOutboundWorksheet extends localize(i18next)(PageView) {
446
463
  }
447
464
 
448
465
  _exportableData() {
449
- return this.dataGrist.exportRecords()
466
+ let records = []
467
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
468
+ records = this.dataGrist.selected
469
+ } else {
470
+ records = this.dataGrist.data.records
471
+ }
472
+
473
+ var headerSetting = this.dataGrist._config.columns
474
+ .filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
475
+ .map(column => {
476
+ return column.imex
477
+ })
478
+
479
+ var data = records.map(item => {
480
+ return {
481
+ id: item.id,
482
+ ...this._columns
483
+ .filter(column => column.type !== 'gutter' /* && column.record !== undefined */ && column.imex !== undefined)
484
+ .reduce((record, column) => {
485
+ record[column.imex.key] = column.imex.key
486
+ .split('.')
487
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
488
+ if (record[column.imex.key] === 'Invalid Date') {
489
+ record[column.imex.key] = ''
490
+ }
491
+ return record
492
+ }, {})
493
+ }
494
+ })
495
+ return { header: headerSetting, data: data }
450
496
  }
451
497
 
452
498
  navigatePickingRelatedPages(record) {
@@ -21,6 +21,7 @@ class WorksheetLoading extends localize(i18next)(PageView) {
21
21
  return {
22
22
  _worksheetNo: String,
23
23
  _worksheetStatus: String,
24
+ _statusList: Array,
24
25
  vasData: Object,
25
26
  vasGristConfig: Object,
26
27
  _roNo: String,
@@ -133,11 +134,12 @@ class WorksheetLoading extends localize(i18next)(PageView) {
133
134
  <label for="ownCollection">${i18next.t('label.own_collection')}</label>
134
135
 
135
136
  <label>${i18next.t('label.status')}</label>
136
- <select name="status" disabled>
137
- ${Object.keys(WORKSHEET_STATUS).map(
138
- key => html` <option value="${WORKSHEET_STATUS[key].value}">${WORKSHEET_STATUS[key].name}</option> `
139
- )}
140
- </select>
137
+ <input
138
+ name="status"
139
+ value="${this._statusList.find(x => x.value == this._worksheetStatus)?.display || ''}"
140
+ readonly
141
+ disabled
142
+ />
141
143
  </fieldset>
142
144
  </form>
143
145
 
@@ -169,6 +171,13 @@ class WorksheetLoading extends localize(i18next)(PageView) {
169
171
  `
170
172
  }
171
173
 
174
+ constructor() {
175
+ super()
176
+ this._statusList = Object.keys(WORKSHEET_STATUS).map(key => {
177
+ return { value: WORKSHEET_STATUS[key].value, display: WORKSHEET_STATUS[key].name }
178
+ })
179
+ }
180
+
172
181
  async pageUpdated(changes) {
173
182
  if (this.active && (changes.resourceId || this._worksheetNo)) {
174
183
  if (changes.resourceId) {
@@ -32,6 +32,7 @@ class WorksheetPicking extends localize(i18next)(PageView) {
32
32
  _worksheetNo: String,
33
33
  _worksheetStatus: String,
34
34
  _roNo: String,
35
+ _statusList: Array,
35
36
  ganNo: String,
36
37
  assignee: Object,
37
38
  productGristConfig: Object,
@@ -119,6 +120,9 @@ class WorksheetPicking extends localize(i18next)(PageView) {
119
120
  super()
120
121
  this.isPalletPickingOrder = false
121
122
  this.worksheetDetailData = { records: [] }
123
+ this._statusList = Object.keys(WORKSHEET_STATUS).map(key => {
124
+ return { value: WORKSHEET_STATUS[key].value, display: WORKSHEET_STATUS[key].name }
125
+ })
122
126
  }
123
127
 
124
128
  get context() {
@@ -211,11 +215,12 @@ class WorksheetPicking extends localize(i18next)(PageView) {
211
215
  : ''}
212
216
 
213
217
  <label>${i18next.t('label.status')}</label>
214
- <select name="status" disabled>
215
- ${Object.keys(WORKSHEET_STATUS).map(
216
- key => html`<option value="${WORKSHEET_STATUS[key].value}">${WORKSHEET_STATUS[key].name}</option>`
217
- )}
218
- </select>
218
+ <input
219
+ name="status"
220
+ value="${this._statusList.find(x => x.value == this._worksheetStatus)?.display || ''}"
221
+ readonly
222
+ disabled
223
+ />
219
224
 
220
225
  <label>${i18next.t('label.assignee')}</label>
221
226
  <input name="assignee" readonly />
@@ -183,10 +183,10 @@ class ElcclInventoryReport extends connect(store)(localize(i18next)(PageView)) {
183
183
  },
184
184
  {
185
185
  type: 'string',
186
- name: 'orderName',
186
+ name: 'orderNo',
187
187
  header: i18next.t('field.order_no'),
188
188
  sortable: true,
189
- imex: { header: i18next.t('field.order_no'), key: 'orderName', width: 25, type: 'string' },
189
+ imex: { header: i18next.t('field.order_no'), key: 'orderNo', width: 25, type: 'string' },
190
190
  width: 300
191
191
  },
192
192
  {
@@ -235,7 +235,7 @@ class ElcclInventoryReport extends connect(store)(localize(i18next)(PageView)) {
235
235
  this._config = this.reportConfig
236
236
  }
237
237
 
238
- async pageUpdated(changes, lifecycle) {
238
+ pageUpdated(changes, lifecycle) {
239
239
  if (this.active) {
240
240
  this.report.fetch()
241
241
  }
@@ -247,30 +247,8 @@ class ElcclInventoryReport extends connect(store)(localize(i18next)(PageView)) {
247
247
 
248
248
  const response = await client.query({
249
249
  query: gql`
250
- query {
251
- elcclInventoryHistoryReport(${gqlBuilder.buildArgs({
252
- filters: [
253
- ...this.searchForm.queryFilters.map(filter => {
254
- switch (filter.name) {
255
- case 'fromDate':
256
- let fromDt = new Date(filter.value)
257
- fromDt.setHours(0)
258
- filter.value = fromDt.toISOString()
259
- break
260
- case 'toDate':
261
- let toDt = new Date(filter.value)
262
- toDt.setHours(23, 59, 59)
263
- filter.value = toDt.toISOString()
264
- break
265
- default:
266
- break
267
- }
268
- return filter
269
- })
270
- ],
271
- pagination: { page, limit },
272
- sortings: sorters
273
- })}) {
250
+ query elcclInventoryHistoryReport($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
251
+ elcclInventoryHistoryReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
274
252
  batchId
275
253
  product {
276
254
  sku
@@ -283,11 +261,34 @@ class ElcclInventoryReport extends connect(store)(localize(i18next)(PageView)) {
283
261
  openingUomValue
284
262
  qty
285
263
  uomValue
286
- orderName
264
+ orderNo
287
265
  createdAt
288
266
  }
289
267
  }
290
- `
268
+ `,
269
+ variables: {
270
+ filters: [
271
+ ...this.searchForm.queryFilters.map(filter => {
272
+ switch (filter.name) {
273
+ case 'fromDate':
274
+ let fromDt = new Date(filter.value)
275
+ fromDt.setHours(0)
276
+ filter.value = fromDt.toISOString()
277
+ break
278
+ case 'toDate':
279
+ let toDt = new Date(filter.value)
280
+ toDt.setHours(23, 59, 59)
281
+ filter.value = toDt.toISOString()
282
+ break
283
+ default:
284
+ break
285
+ }
286
+ return filter
287
+ })
288
+ ],
289
+ pagination: { page, limit },
290
+ sortings: sorters
291
+ }
291
292
  })
292
293
  return {
293
294
  total: 0,
@@ -302,7 +303,7 @@ class ElcclInventoryReport extends connect(store)(localize(i18next)(PageView)) {
302
303
  }) || []
303
304
  }
304
305
  } catch (e) {
305
- console.log(e)
306
+ this._showToast(e)
306
307
  }
307
308
  }
308
309
 
@@ -7,7 +7,7 @@ import { connect } from 'pwa-helpers/connect-mixin'
7
7
 
8
8
  import { i18next, localize } from '@things-factory/i18n-base'
9
9
  import { client, PageView, store } from '@things-factory/shell'
10
- import { flattenObject, gqlBuilder, isMobileDevice } from '@things-factory/utils'
10
+ import { flattenObject, isMobileDevice } from '@things-factory/utils'
11
11
 
12
12
  class ElcclInventorySummaryReport extends connect(store)(localize(i18next)(PageView)) {
13
13
  static get styles() {
@@ -243,7 +243,7 @@ class ElcclInventorySummaryReport extends connect(store)(localize(i18next)(PageV
243
243
  this._config = this.reportConfig
244
244
  }
245
245
 
246
- async pageUpdated(changes, lifecycle) {
246
+ pageUpdated(changes, lifecycle) {
247
247
  if (this.active) {
248
248
  this.dataGrist.fetch()
249
249
  }
@@ -271,33 +271,30 @@ class ElcclInventorySummaryReport extends connect(store)(localize(i18next)(PageV
271
271
  })
272
272
  const response = await client.query({
273
273
  query: gql`
274
- query {
275
- elcclInventoryHistorySummaryReport(${gqlBuilder.buildArgs({
276
- filters: filter,
277
- pagination: { page, limit },
278
- sortings: sorters
279
- })}) {
280
- items{
281
- batchId
282
- packingType
283
- product{
284
- id
285
- sku
286
- name
287
- description
288
- }
289
- adjustmentQty
290
- closingQty
291
- totalInQty
292
- totalOutQty
293
- totalReturnQty
294
- initialQty
295
- initialDate
274
+ query elcclInventoryHistorySummaryReport($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
275
+ elcclInventoryHistorySummaryReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
276
+ items {
277
+ batchId
278
+ packingType
279
+ product {
280
+ id
281
+ sku
282
+ name
283
+ description
296
284
  }
297
- total
285
+ adjustmentQty
286
+ closingQty
287
+ totalInQty
288
+ totalOutQty
289
+ totalReturnQty
290
+ initialQty
291
+ initialDate
298
292
  }
293
+ total
299
294
  }
300
- `
295
+ }
296
+ `,
297
+ variables: { filters: filter, pagination: { page, limit }, sortings: sorters }
301
298
  })
302
299
  return {
303
300
  total: response.data.elcclInventoryHistorySummaryReport.total,
@@ -8,7 +8,7 @@ import { connect } from 'pwa-helpers/connect-mixin'
8
8
  import { getCodeByName } from '@things-factory/code-base'
9
9
  import { i18next, localize } from '@things-factory/i18n-base'
10
10
  import { client, PageView, store } from '@things-factory/shell'
11
- import { flattenObject, gqlBuilder, isMobileDevice } from '@things-factory/utils'
11
+ import { flattenObject, isMobileDevice } from '@things-factory/utils'
12
12
 
13
13
  class InventoryPalletStorageReport extends connect(store)(localize(i18next)(PageView)) {
14
14
  static get styles() {
@@ -254,7 +254,7 @@ class InventoryPalletStorageReport extends connect(store)(localize(i18next)(Page
254
254
  this._config = this.reportConfig
255
255
  }
256
256
 
257
- async pageUpdated(changes, lifecycle) {
257
+ pageUpdated(changes, lifecycle) {
258
258
  if (this.active) {
259
259
  this.dataGrist.fetch()
260
260
  }
@@ -285,13 +285,13 @@ class InventoryPalletStorageReport extends connect(store)(localize(i18next)(Page
285
285
 
286
286
  const response = await client.query({
287
287
  query: gql`
288
- query {
289
- inventoryHistoryPalletStorageReport(${gqlBuilder.buildArgs({
290
- filters: filter,
291
- pagination: { page, limit },
292
- sortings: sorters
293
- })}) {
294
- items{
288
+ query inventoryHistoryPalletStorageReport(
289
+ $filters: [Filter!]
290
+ $pagination: Pagination
291
+ $sortings: [Sorting!]
292
+ ) {
293
+ inventoryHistoryPalletStorageReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
294
+ items {
295
295
  bizplace {
296
296
  name
297
297
  }
@@ -309,7 +309,8 @@ class InventoryPalletStorageReport extends connect(store)(localize(i18next)(Page
309
309
  totalWithOpeningBalance
310
310
  }
311
311
  }
312
- `
312
+ `,
313
+ variables: { filters: filter, pagination: { page, limit }, sortings: sorters }
313
314
  })
314
315
 
315
316
  let data = {
@@ -7,7 +7,7 @@ import { connect } from 'pwa-helpers/connect-mixin'
7
7
 
8
8
  import { i18next, localize } from '@things-factory/i18n-base'
9
9
  import { client, PageView, store } from '@things-factory/shell'
10
- import { flattenObject, gqlBuilder } from '@things-factory/utils'
10
+ import { flattenObject } from '@things-factory/utils'
11
11
 
12
12
  class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
13
13
  static get styles() {
@@ -208,10 +208,10 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
208
208
  },
209
209
  {
210
210
  type: 'string',
211
- name: 'orderName',
211
+ name: 'orderNo',
212
212
  header: i18next.t('field.order_no'),
213
213
  sortable: true,
214
- imex: { header: i18next.t('field.order_no'), key: 'orderName', width: 25, type: 'string' },
214
+ imex: { header: i18next.t('field.order_no'), key: 'orderNo', width: 25, type: 'string' },
215
215
  width: 300
216
216
  },
217
217
  {
@@ -260,7 +260,7 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
260
260
  this._config = this.reportConfig
261
261
  }
262
262
 
263
- async pageUpdated(changes, lifecycle) {
263
+ pageUpdated(changes, lifecycle) {
264
264
  if (this.active) {
265
265
  this.report.fetch()
266
266
  }
@@ -273,32 +273,8 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
273
273
  var tzoffset = new Date().getTimezoneOffset() * 60
274
274
  const response = await client.query({
275
275
  query: gql`
276
- query {
277
- inventoryHistoryReport(${gqlBuilder.buildArgs({
278
- filters: [
279
- ...this.searchForm.queryFilters.map(filter => {
280
- switch (filter.name) {
281
- case 'fromDate':
282
- let fromDt = new Date(filter.value)
283
- fromDt.setHours(0)
284
- filter.value = fromDt.toISOString()
285
- break
286
- case 'toDate':
287
- let toDt = new Date(filter.value)
288
- toDt.setHours(23, 59, 59)
289
- filter.value = toDt.toISOString()
290
- break
291
- default:
292
- break
293
- }
294
-
295
- return filter
296
- }),
297
- { name: 'tzoffset', operator: 'custom', value: tzoffset }
298
- ],
299
- pagination: { page, limit },
300
- sortings: sorters
301
- })}) {
276
+ query inventoryHistoryReport($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
277
+ inventoryHistoryReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
302
278
  palletId
303
279
  batchId
304
280
  bizplace {
@@ -313,15 +289,38 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
313
289
  qty
314
290
  uom
315
291
  uomValue
316
- status
317
292
  packingType
318
- transactionType
319
- orderName
293
+ orderNo
320
294
  orderRefNo
321
295
  createdAt
322
296
  }
323
297
  }
324
- `
298
+ `,
299
+ variables: {
300
+ filters: [
301
+ ...this.searchForm.queryFilters.map(filter => {
302
+ switch (filter.name) {
303
+ case 'fromDate':
304
+ let fromDt = new Date(filter.value)
305
+ fromDt.setHours(0)
306
+ filter.value = fromDt.toISOString()
307
+ break
308
+ case 'toDate':
309
+ let toDt = new Date(filter.value)
310
+ toDt.setHours(23, 59, 59)
311
+ filter.value = toDt.toISOString()
312
+ break
313
+ default:
314
+ break
315
+ }
316
+
317
+ return filter
318
+ }),
319
+ { name: 'tzoffset', operator: 'custom', value: tzoffset }
320
+ ],
321
+ pagination: { page, limit },
322
+ sortings: sorters
323
+ }
325
324
  })
326
325
  return {
327
326
  total: 0,
@@ -411,17 +410,16 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
411
410
  } else {
412
411
  const response = await client.query({
413
412
  query: gql`
414
- query {
415
- productsByBizplace(${gqlBuilder.buildArgs({
416
- filters: [...bizplace]
417
- })}) {
418
- items {
419
- id
420
- name
421
- }
413
+ query productsByBizplace($filters: [Filter!]) {
414
+ productsByBizplace(filters: $filters) {
415
+ items {
416
+ id
417
+ name
422
418
  }
423
419
  }
424
- `
420
+ }
421
+ `,
422
+ variables: { filters: [...bizplace] }
425
423
  })
426
424
 
427
425
  if (!response.errors) {
@@ -10,7 +10,7 @@ import { getPartnerCodeByName } from '@things-factory/code-base'
10
10
  import { i18next, localize } from '@things-factory/i18n-base'
11
11
  import { openPopup } from '@things-factory/layout-base'
12
12
  import { client, PageView, store } from '@things-factory/shell'
13
- import { flattenObject, gqlBuilder, isMobileDevice } from '@things-factory/utils'
13
+ import { flattenObject, isMobileDevice } from '@things-factory/utils'
14
14
 
15
15
  class InventorySummaryReport extends connect(store)(localize(i18next)(PageView)) {
16
16
  static get styles() {
@@ -320,7 +320,7 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
320
320
  this._config = this.reportConfig
321
321
  }
322
322
 
323
- async pageUpdated(changes, lifecycle) {
323
+ pageUpdated(changes, lifecycle) {
324
324
  if (this.active) {
325
325
  this.dataGrist.fetch()
326
326
  }
@@ -349,35 +349,32 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
349
349
  })
350
350
  const response = await client.query({
351
351
  query: gql`
352
- query {
353
- inventoryHistorySummaryReport(${gqlBuilder.buildArgs({
354
- filters: filter,
355
- pagination: { page, limit },
356
- sortings: sorters
357
- })}) {
358
- items{
359
- batchId
360
- packingType
361
- packingSize
362
- product{
363
- id
364
- sku
365
- name
366
- description
367
- type
368
- }
369
- openingQty
370
- totalInQty
371
- totalOutQty
372
- adjustmentQty
373
- closingQty
352
+ query inventoryHistorySummaryReport($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
353
+ inventoryHistorySummaryReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
354
+ items {
355
+ batchId
356
+ packingType
357
+ packingSize
358
+ product {
359
+ id
360
+ sku
361
+ name
362
+ description
363
+ type
374
364
  }
375
- total
376
- totalInboundQty
377
- totalOpeningBal
365
+ openingQty
366
+ totalInQty
367
+ totalOutQty
368
+ adjustmentQty
369
+ closingQty
378
370
  }
371
+ total
372
+ totalInboundQty
373
+ totalOpeningBal
379
374
  }
380
- `
375
+ }
376
+ `,
377
+ variables: { filters: filter, pagination: { page, limit }, sortings: sorters }
381
378
  })
382
379
 
383
380
  const data = {
@@ -475,6 +475,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
475
475
  id
476
476
  batchId
477
477
  packingType
478
+ releaseQty
478
479
  product {
479
480
  name
480
481
  sku
@@ -549,7 +550,8 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
549
550
  auxValue1: product.auxValue1 || '',
550
551
  auxUnit2: product.auxUnit2 || '',
551
552
  auxValue2: product.auxValue2 || '',
552
- bizplaceId: releaseGood.bizplace.id
553
+ bizplaceId: releaseGood.bizplace.id,
554
+ printQty: oi.releaseQty || 0
553
555
  }
554
556
 
555
557
  if (product.productDetails && product.productDetails.length) {
package/client/route.js CHANGED
@@ -514,5 +514,10 @@ export default function route(page) {
514
514
  case 'execute_reverse_kitting':
515
515
  import('./pages/vas/reverse-kitting/execute-reverse-kitting')
516
516
  return page
517
+
518
+ /* Bulk Operations */
519
+ case 'bulk_operation':
520
+ import('./pages/bulk-operation/bulk-operation')
521
+ return page
517
522
  }
518
523
  }