@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.
- package/client/pages/adjustment/transfer-inventory.js +390 -158
- package/client/pages/bulk-operation/bulk-operation.js +316 -0
- package/client/pages/bulk-operation/validate-ro-popup.js +445 -0
- package/client/pages/components/select-product-popup.js +1 -1
- package/client/pages/constants/inventory.js +1 -0
- package/client/pages/constants/location.js +33 -6
- package/client/pages/constants/worksheet.js +2 -2
- package/client/pages/inbound/inbound-worksheet.js +81 -15
- package/client/pages/inbound/putaway-product.js +61 -9
- package/client/pages/inbound/putaway-worksheet-generate-popup.js +29 -5
- package/client/pages/inbound/unload-product.js +80 -19
- package/client/pages/inbound/worksheet-putaway-return.js +14 -5
- package/client/pages/inbound/worksheet-putaway.js +13 -8
- package/client/pages/inbound/worksheet-unloading-return.js +14 -5
- package/client/pages/inventory/inventory-adjustment-approval.js +15 -23
- package/client/pages/inventory/inventory-adjustment.js +84 -80
- package/client/pages/inventory/inventory-by-product-detail.js +1 -1
- package/client/pages/inventory/inventory-by-product.js +1 -1
- package/client/pages/inventory/inventory-history-by-pallet.js +1 -1
- package/client/pages/inventory/inventory-history.js +2 -2
- package/client/pages/inventory/onhand-inventory.js +1 -2
- package/client/pages/inventory-check/create-cycle-count.js +1 -6
- package/client/pages/master/location-list.js +58 -17
- package/client/pages/order/arrival-notice/arrival-notice-detail.js +15 -8
- package/client/pages/order/arrival-notice/arrival-notice-list.js +87 -6
- package/client/pages/order/arrival-notice/arrival-notice-requests.js +83 -6
- package/client/pages/order/arrival-notice/create-arrival-notice.js +23 -2
- package/client/pages/order/arrival-notice/duplicate-arrival-notice.js +290 -25
- package/client/pages/order/arrival-notice/edit-product-popup.js +36 -5
- package/client/pages/order/release-order/b2c/b2c-order-requests.js +60 -0
- package/client/pages/order/release-order/batch-picking-popup.js +18 -1
- package/client/pages/order/release-order/create-release-order.js +2 -2
- package/client/pages/order/release-order/release-extra-product-popup.js +12 -4
- package/client/pages/order/release-order/release-order-detail.js +1 -1
- package/client/pages/order/return-order/create-return-order.js +1 -1
- package/client/pages/order/return-order/return-order-detail.js +6 -5
- package/client/pages/order/transport-order/delivery-order-list.js +4 -1
- package/client/pages/outbound/inventory-assign-popup.js +1 -1
- package/client/pages/outbound/merged-outbound-worksheet.js +9 -5
- package/client/pages/outbound/picking-product.js +223 -184
- package/client/pages/outbound/picking-replacement-popup.js +2 -2
- package/client/pages/outbound/single-outbound-worksheet.js +47 -1
- package/client/pages/outbound/worksheet-loading.js +14 -5
- package/client/pages/outbound/worksheet-picking.js +10 -5
- package/client/pages/report/custom-elccl/elccl-inventory-report.js +31 -30
- package/client/pages/report/custom-elccl/elccl-inventory-summary-report.js +23 -26
- package/client/pages/report/inventory-pallet-storage-report.js +11 -10
- package/client/pages/report/inventory-report.js +41 -43
- package/client/pages/report/inventory-summary-report.js +25 -28
- package/client/pages/vas/print-product-label.js +3 -1
- package/client/route.js +5 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +1 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +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/reports/product-label-report.js +1 -0
- package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -1
- package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
- package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +20 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +1 -1
- package/dist-server/graphql/types/index.js +5 -2
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/shipping-provider/index.js +10 -0
- package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
- package/package.json +37 -37
- package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +4 -2
- package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +1 -1
- package/server/graphql/resolvers/index.ts +3 -1
- package/server/graphql/resolvers/reports/product-label-report.ts +1 -0
- package/server/graphql/resolvers/shipping-provider/index.ts +5 -0
- package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +20 -0
- package/server/graphql/types/custom/elccl/elccl-inventory-report.ts +1 -1
- package/server/graphql/types/index.ts +5 -2
- package/server/graphql/types/shipping-provider/index.ts +8 -0
- package/server/graphql/types/shipping-provider/shipping-provider-list.ts +7 -0
- package/server/graphql/types/shipping-provider/shipping-provider.ts +7 -0
- package/things-factory.config.js +6 -0
- package/translations/en.json +28 -0
- package/translations/ko.json +85 -36
- package/translations/ms.json +86 -37
- 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
|
-
|
|
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
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
<
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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: '
|
|
186
|
+
name: 'orderNo',
|
|
187
187
|
header: i18next.t('field.order_no'),
|
|
188
188
|
sortable: true,
|
|
189
|
-
imex: { header: i18next.t('field.order_no'), key: '
|
|
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
|
-
|
|
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(${
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
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
|
|
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: '
|
|
211
|
+
name: 'orderNo',
|
|
212
212
|
header: i18next.t('field.order_no'),
|
|
213
213
|
sortable: true,
|
|
214
|
-
imex: { header: i18next.t('field.order_no'), key: '
|
|
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
|
-
|
|
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(${
|
|
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
|
-
|
|
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
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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
|
-
|
|
376
|
-
|
|
377
|
-
|
|
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
|
}
|