@things-factory/operato-wms 3.7.12 → 3.8.0

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 (98) hide show
  1. package/client/pages/adjustment/transfer-inventory.js +364 -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 +10 -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 +60 -8
  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 +22 -5
  13. package/client/pages/inbound/worksheet-putaway.js +21 -8
  14. package/client/pages/inbound/worksheet-unloading-return.js +22 -5
  15. package/client/pages/inbound/worksheet-unloading.js +8 -0
  16. package/client/pages/inventory/inventory-adjustment-approval.js +18 -8
  17. package/client/pages/inventory/inventory-adjustment.js +91 -76
  18. package/client/pages/inventory/inventory-by-product-detail.js +1 -1
  19. package/client/pages/inventory/inventory-by-product.js +9 -1
  20. package/client/pages/inventory/inventory-history-by-pallet.js +10 -1
  21. package/client/pages/inventory/inventory-history.js +12 -2
  22. package/client/pages/inventory/onhand-inventory.js +12 -3
  23. package/client/pages/inventory-check/create-cycle-count.js +12 -6
  24. package/client/pages/inventory-check/cycle-count-report.js +8 -0
  25. package/client/pages/inventory-check/worksheet-cycle-count.js +14 -0
  26. package/client/pages/master/location-list.js +58 -17
  27. package/client/pages/order/arrival-notice/arrival-notice-detail.js +134 -115
  28. package/client/pages/order/arrival-notice/arrival-notice-list.js +87 -6
  29. package/client/pages/order/arrival-notice/arrival-notice-requests.js +83 -6
  30. package/client/pages/order/arrival-notice/assign-buffer-location.js +8 -1
  31. package/client/pages/order/arrival-notice/check-arrived-notice.js +9 -1
  32. package/client/pages/order/arrival-notice/create-arrival-notice.js +30 -2
  33. package/client/pages/order/arrival-notice/duplicate-arrival-notice.js +290 -25
  34. package/client/pages/order/arrival-notice/edit-product-popup.js +36 -5
  35. package/client/pages/order/arrival-notice/receive-arrival-notice.js +8 -1
  36. package/client/pages/order/release-order/b2b/b2b-order-requests.js +7 -7
  37. package/client/pages/order/release-order/b2c/b2c-order-requests.js +65 -5
  38. package/client/pages/order/release-order/create-release-order.js +24 -1
  39. package/client/pages/order/release-order/receive-release-order-request.js +8 -0
  40. package/client/pages/order/release-order/release-extra-product-popup.js +12 -4
  41. package/client/pages/order/release-order/release-order-detail.js +9 -1
  42. package/client/pages/order/return-order/check-return-order.js +9 -1
  43. package/client/pages/order/return-order/create-return-order.js +14 -2
  44. package/client/pages/order/return-order/receive-return-order-requests.js +9 -1
  45. package/client/pages/order/return-order/return-order-detail.js +15 -6
  46. package/client/pages/order/return-order/return-order-inventory-popup.js +7 -0
  47. package/client/pages/order/transport-order/delivery-order-list.js +4 -1
  48. package/client/pages/outbound/inventory-assign-popup.js +11 -2
  49. package/client/pages/outbound/inventory-auto-assign-popup.js +9 -0
  50. package/client/pages/outbound/merged-outbound-worksheet.js +9 -5
  51. package/client/pages/outbound/picking-product.js +202 -162
  52. package/client/pages/outbound/picking-replacement-popup.js +2 -2
  53. package/client/pages/outbound/single-outbound-worksheet.js +47 -1
  54. package/client/pages/outbound/worksheet-loading.js +22 -5
  55. package/client/pages/outbound/worksheet-packing.js +8 -0
  56. package/client/pages/outbound/worksheet-picking.js +29 -5
  57. package/client/pages/outbound/worksheet-return.js +9 -1
  58. package/client/pages/outbound/worksheet-sorting.js +9 -1
  59. package/client/pages/report/custom-elccl/elccl-inventory-report.js +31 -30
  60. package/client/pages/report/custom-elccl/elccl-inventory-summary-report.js +23 -26
  61. package/client/pages/report/inventory-pallet-storage-report.js +11 -10
  62. package/client/pages/report/inventory-report.js +41 -43
  63. package/client/pages/report/inventory-summary-report.js +25 -28
  64. package/client/route.js +5 -0
  65. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +1 -1
  66. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  67. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +1 -1
  68. package/dist-server/graphql/resolvers/index.js +3 -1
  69. package/dist-server/graphql/resolvers/index.js.map +1 -1
  70. package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
  71. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
  72. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +20 -0
  73. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
  74. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +1 -1
  75. package/dist-server/graphql/types/index.js +5 -2
  76. package/dist-server/graphql/types/index.js.map +1 -1
  77. package/dist-server/graphql/types/shipping-provider/index.js +10 -0
  78. package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
  79. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
  80. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
  81. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
  82. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
  83. package/package.json +37 -37
  84. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +4 -2
  85. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +1 -1
  86. package/server/graphql/resolvers/index.ts +3 -1
  87. package/server/graphql/resolvers/shipping-provider/index.ts +5 -0
  88. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +20 -0
  89. package/server/graphql/types/custom/elccl/elccl-inventory-report.ts +1 -1
  90. package/server/graphql/types/index.ts +5 -2
  91. package/server/graphql/types/shipping-provider/index.ts +8 -0
  92. package/server/graphql/types/shipping-provider/shipping-provider-list.ts +7 -0
  93. package/server/graphql/types/shipping-provider/shipping-provider.ts +7 -0
  94. package/things-factory.config.js +6 -0
  95. package/translations/en.json +27 -0
  96. package/translations/ko.json +84 -36
  97. package/translations/ms.json +85 -37
  98. package/translations/zh.json +98 -51
@@ -204,12 +204,29 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
204
204
  ]
205
205
 
206
206
  this.config = {
207
- list: { fields: ['name', 'etaDate', 'importCargo', 'ownTransport', 'crossDocking', 'updatedAt', 'updater'] },
207
+ list: {
208
+ fields: [
209
+ 'name',
210
+ 'bizplace',
211
+ 'refNo',
212
+ 'refNo2',
213
+ 'refNo3',
214
+ 'etaDate',
215
+ 'container',
216
+ 'importCargo',
217
+ 'ownTransport',
218
+ 'crossDocking',
219
+ 'status',
220
+ 'createdAt',
221
+ 'updatedAt',
222
+ 'creator'
223
+ ]
224
+ },
208
225
  rows: { appendable: false, selectable: { multiple: true } },
209
226
  pagination: { limit: 100, pages: [20, 50, 100, 200, 500] },
210
227
  columns: [
211
- { type: 'gutter', gutterName: 'dirty' },
212
228
  { type: 'gutter', gutterName: 'sequence' },
229
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
213
230
  {
214
231
  type: 'gutter',
215
232
  gutterName: 'button',
@@ -229,6 +246,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
229
246
  type: 'string',
230
247
  name: 'name',
231
248
  header: i18next.t('field.gan'),
249
+ label: true,
232
250
  sortable: true,
233
251
  width: 180
234
252
  },
@@ -236,6 +254,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
236
254
  type: 'object',
237
255
  name: 'bizplace',
238
256
  header: i18next.t('field.company'),
257
+ label: true,
239
258
  sortable: true,
240
259
  width: 250
241
260
  },
@@ -243,6 +262,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
243
262
  type: 'string',
244
263
  name: 'refNo',
245
264
  header: i18next.t('field.ref_no'),
265
+ label: true,
246
266
  sortable: true,
247
267
  width: 150
248
268
  },
@@ -250,6 +270,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
250
270
  type: 'string',
251
271
  name: 'refNo2',
252
272
  header: i18next.t('field.ref_no_2'),
273
+ label: true,
253
274
  sortable: true,
254
275
  width: 150
255
276
  },
@@ -257,6 +278,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
257
278
  type: 'string',
258
279
  name: 'refNo3',
259
280
  header: i18next.t('field.ref_no_3'),
281
+ label: true,
260
282
  sortable: true,
261
283
  width: 150
262
284
  },
@@ -264,6 +286,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
264
286
  type: 'date',
265
287
  name: 'etaDate',
266
288
  header: i18next.t('field.eta'),
289
+ label: true,
267
290
  sortable: true,
268
291
  width: 120
269
292
  },
@@ -271,6 +294,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
271
294
  type: 'boolean',
272
295
  name: 'container',
273
296
  header: i18next.t('field.container'),
297
+ label: true,
274
298
  sortable: true,
275
299
  width: 60
276
300
  },
@@ -278,6 +302,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
278
302
  type: 'boolean',
279
303
  name: 'importCargo',
280
304
  header: i18next.t('field.import_cargo'),
305
+ label: true,
281
306
  sortable: true,
282
307
  width: 60
283
308
  },
@@ -285,6 +310,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
285
310
  type: 'boolean',
286
311
  name: 'ownTransport',
287
312
  header: i18next.t('field.own_transport'),
313
+ label: true,
288
314
  sortable: true,
289
315
  width: 60
290
316
  },
@@ -292,18 +318,23 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
292
318
  type: 'boolean',
293
319
  name: 'crossDocking',
294
320
  header: i18next.t('field.cross_docking'),
321
+ label: true,
322
+ sortable: true,
295
323
  width: 60
296
324
  },
297
325
  {
298
326
  type: 'object',
299
327
  name: 'releaseGood',
300
328
  header: i18next.t('field.ro'),
329
+ label: true,
330
+ sortable: true,
301
331
  width: 160
302
332
  },
303
333
  {
304
334
  type: 'string',
305
335
  name: 'status',
306
336
  header: i18next.t('field.status'),
337
+ label: true,
307
338
  sortable: true,
308
339
  width: 120
309
340
  },
@@ -311,6 +342,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
311
342
  type: 'datetime',
312
343
  name: 'createdAt',
313
344
  header: i18next.t('field.created_at'),
345
+ label: true,
314
346
  sortable: true,
315
347
  width: 160
316
348
  },
@@ -318,6 +350,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
318
350
  type: 'datetime',
319
351
  name: 'updatedAt',
320
352
  header: i18next.t('field.updated_at'),
353
+ label: true,
321
354
  sortable: true,
322
355
  width: 160
323
356
  },
@@ -325,6 +358,7 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
325
358
  type: 'object',
326
359
  name: 'creator',
327
360
  header: i18next.t('field.created_by'),
361
+ label: true,
328
362
  sortable: true,
329
363
  width: 200
330
364
  }
@@ -447,12 +481,59 @@ class ArrivalNoticeList extends localize(i18next)(PageView) {
447
481
  }
448
482
  }
449
483
 
450
- get _columns() {
451
- return this.config.columns
484
+ async _exportableData() {
485
+ try {
486
+ let data = []
487
+
488
+ var headerSetting = [
489
+ { header: i18next.t('field.order_no'), key: 'name', width: 25, type: 'string' },
490
+ { header: i18next.t('field.company'), key: 'bizplaceName', width: 25, type: 'string' },
491
+ { header: i18next.t('field.ref_no'), key: 'refNo', width: 25, type: 'string' },
492
+ { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
493
+ { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
494
+ { header: i18next.t('field.eta_date'), key: 'etaDate', width: 30, type: 'string' },
495
+ { header: i18next.t('field.container'), key: 'container', width: 30, type: 'string' },
496
+ { header: i18next.t('field.import_cargo'), key: 'importCargo', width: 30, type: 'string' },
497
+ { header: i18next.t('field.cross_docking'), key: 'crossDocking', width: 30, type: 'string' },
498
+ { header: i18next.t('field.status'), key: 'status', width: 25, type: 'string' },
499
+ { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'date' },
500
+ { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'date' },
501
+ { header: i18next.t('field.created_by'), key: 'creatorName', width: 25, type: 'string' }
502
+ ]
503
+
504
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
505
+ data = this.dataGrist.selected.map(record => {
506
+ return {
507
+ ...record,
508
+ bizplaceName: record.bizplace?.name,
509
+ creatorName: record.creator?.name
510
+ }
511
+ })
512
+ } else {
513
+ data = (await this.fetchHandler({ page: 1, limit: 9999999 })).records.map(record => {
514
+ return {
515
+ ...record,
516
+ bizplaceName: record.bizplace?.name,
517
+ creatorName: record.creator?.name
518
+ }
519
+ })
520
+ }
521
+
522
+ return { header: headerSetting, data }
523
+ } catch (e) {
524
+ this._showToast(e)
525
+ }
452
526
  }
453
527
 
454
- _exportableData() {
455
- return this.dataGrist.exportRecords()
528
+ _showToast({ type, message }) {
529
+ document.dispatchEvent(
530
+ new CustomEvent('notify', {
531
+ detail: {
532
+ type,
533
+ message
534
+ }
535
+ })
536
+ )
456
537
  }
457
538
  }
458
539
 
@@ -216,12 +216,27 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
216
216
  this.config = {
217
217
  rows: { appendable: false, selectable: { multiple: true } },
218
218
  list: {
219
- fields: ['bizplace', 'status', 'updatedAt']
219
+ fields: [
220
+ 'name',
221
+ 'bizplace',
222
+ 'refNo',
223
+ 'refNo2',
224
+ 'refNo3',
225
+ 'etaDate',
226
+ 'container',
227
+ 'importCargo',
228
+ 'ownTransport',
229
+ 'crossDocking',
230
+ 'status',
231
+ 'createdAt',
232
+ 'updatedAt',
233
+ 'acceptedBy'
234
+ ]
220
235
  },
221
236
  pagination: { limit: 100, pages: [20, 50, 100, 200, 500] },
222
237
  columns: [
223
- { type: 'gutter', gutterName: 'dirty' },
224
238
  { type: 'gutter', gutterName: 'sequence' },
239
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
225
240
  {
226
241
  type: 'gutter',
227
242
  gutterName: 'button',
@@ -245,6 +260,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
245
260
  type: 'string',
246
261
  name: 'name',
247
262
  header: i18next.t('field.gan'),
263
+ label: true,
248
264
  sortable: true,
249
265
  width: 180
250
266
  },
@@ -252,6 +268,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
252
268
  type: 'object',
253
269
  name: 'bizplace',
254
270
  header: i18next.t('field.company'),
271
+ label: true,
255
272
  sortable: true,
256
273
  width: 250
257
274
  },
@@ -259,6 +276,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
259
276
  type: 'string',
260
277
  name: 'refNo',
261
278
  header: i18next.t('field.ref_no'),
279
+ label: true,
262
280
  sortable: true,
263
281
  width: 150
264
282
  },
@@ -266,6 +284,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
266
284
  type: 'string',
267
285
  name: 'refNo2',
268
286
  header: i18next.t('field.ref_no_2'),
287
+ label: true,
269
288
  sortable: true,
270
289
  width: 150
271
290
  },
@@ -273,6 +292,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
273
292
  type: 'string',
274
293
  name: 'refNo3',
275
294
  header: i18next.t('field.ref_no_3'),
295
+ label: true,
276
296
  sortable: true,
277
297
  width: 150
278
298
  },
@@ -280,6 +300,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
280
300
  type: 'date',
281
301
  name: 'etaDate',
282
302
  header: i18next.t('field.eta'),
303
+ label: true,
283
304
  sortable: true,
284
305
  width: 120
285
306
  },
@@ -287,6 +308,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
287
308
  type: 'boolean',
288
309
  name: 'container',
289
310
  header: i18next.t('field.container'),
311
+ label: true,
290
312
  sortable: true,
291
313
  width: 60
292
314
  },
@@ -294,6 +316,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
294
316
  type: 'boolean',
295
317
  name: 'importCargo',
296
318
  header: i18next.t('field.import_cargo'),
319
+ label: true,
297
320
  sortable: true,
298
321
  width: 60
299
322
  },
@@ -301,6 +324,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
301
324
  type: 'boolean',
302
325
  name: 'ownTransport',
303
326
  header: i18next.t('field.own_transport'),
327
+ label: true,
304
328
  sortable: true,
305
329
  width: 60
306
330
  },
@@ -308,18 +332,21 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
308
332
  type: 'boolean',
309
333
  name: 'crossDocking',
310
334
  header: i18next.t('field.cross_docking'),
335
+ label: true,
311
336
  width: 60
312
337
  },
313
338
  {
314
339
  type: 'object',
315
340
  name: 'releaseGood',
316
341
  header: i18next.t('field.ro'),
342
+ label: true,
317
343
  width: 160
318
344
  },
319
345
  {
320
346
  type: 'string',
321
347
  name: 'status',
322
348
  header: i18next.t('field.status'),
349
+ label: true,
323
350
  sortable: true,
324
351
  width: 120
325
352
  },
@@ -327,6 +354,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
327
354
  type: 'datetime',
328
355
  name: 'createdAt',
329
356
  header: i18next.t('field.created_at'),
357
+ label: true,
330
358
  sortable: true,
331
359
  width: 160
332
360
  },
@@ -334,6 +362,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
334
362
  type: 'datetime',
335
363
  name: 'updatedAt',
336
364
  header: i18next.t('field.updated_at'),
365
+ label: true,
337
366
  sortable: true,
338
367
  width: 160
339
368
  },
@@ -341,6 +370,7 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
341
370
  type: 'object',
342
371
  name: 'acceptedBy',
343
372
  header: i18next.t('field.accepted_by'),
373
+ label: true,
344
374
  sortable: true,
345
375
  width: 200
346
376
  }
@@ -458,12 +488,59 @@ class ArrivalNoticeRequests extends localize(i18next)(PageView) {
458
488
  }
459
489
  }
460
490
 
461
- get _columns() {
462
- return this.config.columns
491
+ async _exportableData() {
492
+ try {
493
+ let data = []
494
+
495
+ var headerSetting = [
496
+ { header: i18next.t('field.order_no'), key: 'name', width: 25, type: 'string' },
497
+ { header: i18next.t('field.company'), key: 'bizplaceName', width: 25, type: 'string' },
498
+ { header: i18next.t('field.ref_no'), key: 'refNo', width: 25, type: 'string' },
499
+ { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
500
+ { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
501
+ { header: i18next.t('field.eta_date'), key: 'etaDate', width: 30, type: 'string' },
502
+ { header: i18next.t('field.container'), key: 'container', width: 30, type: 'string' },
503
+ { header: i18next.t('field.import_cargo'), key: 'importCargo', width: 30, type: 'string' },
504
+ { header: i18next.t('field.cross_docking'), key: 'crossDocking', width: 30, type: 'string' },
505
+ { header: i18next.t('field.status'), key: 'status', width: 25, type: 'string' },
506
+ { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'date' },
507
+ { header: i18next.t('field.updated_at'), key: 'updatedAt', width: 30, type: 'date' },
508
+ { header: i18next.t('field.accepted_by'), key: 'acceptedByName', width: 25, type: 'string' }
509
+ ]
510
+
511
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
512
+ data = this.dataGrist.selected.map(record => {
513
+ return {
514
+ ...record,
515
+ bizplaceName: record.bizplace?.name,
516
+ acceptedByName: record.acceptedBy?.name
517
+ }
518
+ })
519
+ } else {
520
+ data = (await this.fetchHandler({ page: 1, limit: 9999999 })).records.map(record => {
521
+ return {
522
+ ...record,
523
+ bizplaceName: record.bizplace?.name,
524
+ acceptedByName: record.acceptedBy?.name
525
+ }
526
+ })
527
+ }
528
+
529
+ return { header: headerSetting, data }
530
+ } catch (e) {
531
+ this._showToast(e)
532
+ }
463
533
  }
464
534
 
465
- _exportableData() {
466
- return this.dataGrist.exportRecords()
535
+ _showToast({ type, message }) {
536
+ document.dispatchEvent(
537
+ new CustomEvent('notify', {
538
+ detail: {
539
+ type,
540
+ message
541
+ }
542
+ })
543
+ )
467
544
  }
468
545
  }
469
546
 
@@ -450,6 +450,7 @@ class AssignBufferLocation extends localize(i18next)(PageView) {
450
450
  name
451
451
  description
452
452
  sku
453
+ brand
453
454
  }
454
455
  remark
455
456
  unitPrice
@@ -523,7 +524,7 @@ class AssignBufferLocation extends localize(i18next)(PageView) {
523
524
  this.setProductGristConfig()
524
525
  this.productData = {
525
526
  records: orderProducts.map(record => {
526
- return { ...record, productSku: record.product.sku }
527
+ return { ...record, productSku: record.product.sku, productBrand: record.product.brand }
527
528
  })
528
529
  }
529
530
  this.vasData = {
@@ -577,6 +578,12 @@ class AssignBufferLocation extends localize(i18next)(PageView) {
577
578
  header: i18next.t('field.product'),
578
579
  width: 350
579
580
  },
581
+ {
582
+ type: 'string',
583
+ name: 'productBrand',
584
+ header: i18next.t('field.brand'),
585
+ width: 150
586
+ },
580
587
  {
581
588
  type: 'string',
582
589
  name: 'packingType',
@@ -300,6 +300,7 @@ class CheckArrivedNotice extends localize(i18next)(PageView) {
300
300
  fields: [
301
301
  'batchId',
302
302
  'productSku',
303
+ 'productBrand',
303
304
  'product',
304
305
  'packingType',
305
306
  'uomValue',
@@ -333,6 +334,12 @@ class CheckArrivedNotice extends localize(i18next)(PageView) {
333
334
  header: i18next.t('field.product'),
334
335
  width: 350
335
336
  },
337
+ {
338
+ type: 'string',
339
+ name: 'productBrand',
340
+ header: i18next.t('field.brand'),
341
+ width: 150
342
+ },
336
343
  {
337
344
  type: 'string',
338
345
  name: 'packingType',
@@ -552,6 +559,7 @@ class CheckArrivedNotice extends localize(i18next)(PageView) {
552
559
  name
553
560
  description
554
561
  sku
562
+ brand
555
563
  }
556
564
  remark
557
565
  unitPrice
@@ -622,7 +630,7 @@ class CheckArrivedNotice extends localize(i18next)(PageView) {
622
630
 
623
631
  this.productData = {
624
632
  records: orderProducts.map(record => {
625
- return { ...record, productSku: record.product.sku }
633
+ return { ...record, productSku: record.product.sku, productBrand: record.product.brand }
626
634
  })
627
635
  }
628
636
  this.vasData = {
@@ -563,6 +563,13 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
563
563
  },
564
564
  width: 350
565
565
  },
566
+ {
567
+ type: 'string',
568
+ name: 'productBrand',
569
+ header: i18next.t('field.brand'),
570
+ imex: { header: i18next.t('field.brand'), key: 'productBrand', width: 25, type: 'string' },
571
+ width: 150
572
+ },
566
573
  {
567
574
  type: 'object',
568
575
  name: 'product',
@@ -653,7 +660,7 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
653
660
  name: 'manufactureYear',
654
661
  header: i18next.t('field.manufacture_year'),
655
662
  imex: { header: i18next.t('field.manufacture_year'), key: 'manufactureYear', width: 25, type: 'float' },
656
- record: { editable: editable, options: { min: 1500, max: 2200 } },
663
+ record: { editable: editable },
657
664
  width: 100
658
665
  },
659
666
  {
@@ -779,6 +786,26 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
779
786
  }
780
787
  }
781
788
 
789
+ if (changedColumn === 'manufactureYear') {
790
+ let manufactureYear = changeRecord.manufactureYear
791
+ const regExp = /^(181[2-9]|18[2-9]\d|19\d\d|2\d{3}|30[0-3]\d|304[0-8])$/
792
+
793
+ if (typeof manufactureYear === undefined || !regExp.test(manufactureYear)) {
794
+ if (manufactureYear === 0) {
795
+ delete event.detail.after[event.detail.column.name]
796
+ } else {
797
+ throw new Error(i18next.t('text.invalid_x', { state: { x: i18next.t('label.manufacture_year') } }))
798
+ }
799
+ }
800
+ }
801
+
802
+ if (changedColumn === 'unitPrice') {
803
+ let unitPrice = changeRecord.unitPrice
804
+ if (typeof unitPrice === undefined || unitPrice < 0) {
805
+ throw new Error(i18next.t('text.x_should_be_positive', { state: { x: i18next.t('label.unit_price') } }))
806
+ }
807
+ }
808
+
782
809
  this._updateVasTargets(true)
783
810
  } catch (e) {
784
811
  const beforeValue = event.detail.before && event.detail.before[event.detail.column.name]
@@ -910,7 +937,7 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
910
937
 
911
938
  const response = await client.query({
912
939
  query: gql`
913
- query productDetails($filters: [Filter]) {
940
+ query productDetails($filters: [Filter!]!) {
914
941
  productDetails(filters: $filters) {
915
942
  items {
916
943
  id
@@ -1454,6 +1481,7 @@ class CreateArrivalNotice extends localize(i18next)(PageView) {
1454
1481
  this.vasGrist.reset()
1455
1482
  this._strictProductSelection = await fetchSettingRule('strict-product-selection', e.detail.domain.id)
1456
1483
  this._configureProductGrist()
1484
+ this._clearView()
1457
1485
  }}"
1458
1486
  ></popup-partner-bizplaces-selector>
1459
1487
  `,