@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
@@ -400,6 +400,12 @@ class ReceiveReleaseOrderRequest extends connect(store)(localize(i18next)(PageVi
400
400
  header: i18next.t('field.product'),
401
401
  width: 150
402
402
  },
403
+ {
404
+ type: 'string',
405
+ name: 'productBrand',
406
+ header: i18next.t('field.brand'),
407
+ width: 100
408
+ },
403
409
  {
404
410
  type: 'string',
405
411
  name: 'packingType',
@@ -595,6 +601,7 @@ class ReceiveReleaseOrderRequest extends connect(store)(localize(i18next)(PageVi
595
601
  product {
596
602
  id
597
603
  sku
604
+ brand
598
605
  name
599
606
  description
600
607
  }
@@ -652,6 +659,7 @@ class ReceiveReleaseOrderRequest extends connect(store)(localize(i18next)(PageVi
652
659
  return {
653
660
  ...inventoryInfo,
654
661
  productSKU: inventoryInfo?.product?.sku || '',
662
+ productBrand: inventoryInfo?.product?.brand || '',
655
663
  qty: inventoryInfo.qty + inventoryInfo.releaseQty,
656
664
  remainUomValue: `${inventoryInfo.uomValue + inventoryInfo.releaseUomValue} ${inventoryInfo.uom}`,
657
665
  releaseUomValue: inventoryInfo.releaseUomValue + ' ' + inventoryInfo.uom,
@@ -620,9 +620,17 @@ export class ReleaseExtraProductPopup extends localize(i18next)(LitElement) {
620
620
  }
621
621
 
622
622
  if (columnName === 'releaseQty') {
623
- releaseQty = afterValue || 0
624
- } else {
625
- releaseQty = Math.round(afterValue / packageUom)
623
+ if (afterValue - originQty <= originAddableQty) {
624
+ releaseQty = afterValue || 0
625
+ } else {
626
+ releaseQty = originQty
627
+ }
628
+ } else if (columnName === 'releaseUomValue') {
629
+ if (afterValue - originUom <= originAddableUom) {
630
+ releaseQty = Math.round(afterValue / packageUom)
631
+ } else {
632
+ releaseQty = Math.round(originUom / packageUom)
633
+ }
626
634
  }
627
635
 
628
636
  roundedUom = releaseQty * packageUom
@@ -718,7 +726,7 @@ export class ReleaseExtraProductPopup extends localize(i18next)(LitElement) {
718
726
  if (beforeValue) {
719
727
  event.detail.after[event.detail.column.name] = beforeValue
720
728
  } else {
721
- delete event.detail.after[event.detail.column.name]
729
+ event.detail.after[event.detail.column.name] = 0
722
730
  }
723
731
  this._showToast(e)
724
732
  }
@@ -527,6 +527,12 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
527
527
  header: i18next.t('field.product'),
528
528
  width: 150
529
529
  },
530
+ {
531
+ type: 'string',
532
+ name: 'productBrand',
533
+ header: i18next.t('field.brand'),
534
+ width: 100
535
+ },
530
536
  {
531
537
  type: 'string',
532
538
  name: 'packingType',
@@ -724,6 +730,7 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
724
730
  product {
725
731
  id
726
732
  sku
733
+ brand
727
734
  name
728
735
  description
729
736
  }
@@ -789,6 +796,7 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
789
796
  return {
790
797
  ...inventoryInfo,
791
798
  productSKU: inventoryInfo?.product?.sku || '',
799
+ productBrand: inventoryInfo?.product?.brand || '',
792
800
  inventory: {
793
801
  id: inventoryInfo.id,
794
802
  name: inventoryInfo.name,
@@ -1178,7 +1186,7 @@ class ReleaseOrderDetail extends connect(store)(localize(i18next)(PageView)) {
1178
1186
  _serializeForm(form) {
1179
1187
  let obj = {}
1180
1188
  Array.from(form.querySelectorAll('input, select')).forEach(field => {
1181
- if (!field.hasAttribute('hidden') && field.value) {
1189
+ if (!field.hasAttribute('hidden')) {
1182
1190
  obj[field.name] = field.type === 'checkbox' ? field.checked : field.value
1183
1191
  }
1184
1192
  })
@@ -271,6 +271,12 @@ class CheckReturnOrder extends connect(store)(localize(i18next)(PageView)) {
271
271
  header: i18next.t('field.product'),
272
272
  width: 150
273
273
  },
274
+ {
275
+ type: 'string',
276
+ name: 'brand',
277
+ header: i18next.t('field.brand'),
278
+ width: 150
279
+ },
274
280
  {
275
281
  type: 'string',
276
282
  name: 'packingType',
@@ -343,6 +349,7 @@ class CheckReturnOrder extends connect(store)(localize(i18next)(PageView)) {
343
349
  name
344
350
  description
345
351
  sku
352
+ brand
346
353
  }
347
354
  productName
348
355
  packingType
@@ -376,7 +383,8 @@ class CheckReturnOrder extends connect(store)(localize(i18next)(PageView)) {
376
383
  records: orderInventories.map(orderInventory => {
377
384
  return {
378
385
  ...orderInventory,
379
- sku: orderInventory.product.sku
386
+ sku: orderInventory.product.sku,
387
+ brand: orderInventory.product.brand
380
388
  }
381
389
  })
382
390
  }
@@ -411,6 +411,11 @@ class CreateReturnOrder extends localize(i18next)(PageView) {
411
411
  width: 280,
412
412
  ignoreCondition: true
413
413
  },
414
+ {
415
+ name: 'productBrand',
416
+ header: i18next.t('field.brand'),
417
+ ignoreCondition: true
418
+ },
414
419
  {
415
420
  name: 'packingType',
416
421
  header: i18next.t('field.packing_type'),
@@ -437,6 +442,7 @@ class CreateReturnOrder extends localize(i18next)(PageView) {
437
442
  'releaseGoodName',
438
443
  'batchId',
439
444
  'productName',
445
+ 'productBrand',
440
446
  'packingType',
441
447
  'packingSize',
442
448
  'releaseQty',
@@ -459,6 +465,12 @@ class CreateReturnOrder extends localize(i18next)(PageView) {
459
465
  header: i18next.t('field.product_name'),
460
466
  width: 150
461
467
  },
468
+ {
469
+ type: 'string',
470
+ name: 'productBrand',
471
+ header: i18next.t('field.brand'),
472
+ width: 150
473
+ },
462
474
  {
463
475
  type: 'string',
464
476
  name: 'batchId',
@@ -632,7 +644,7 @@ class CreateReturnOrder extends localize(i18next)(PageView) {
632
644
  if (releaseQty === undefined) throw new Error(i18next.t('text.there_is_no_selected_items'))
633
645
  if (returnQty > releaseQty) {
634
646
  throw new Error(i18next.t('text.available_quantity_insufficient'))
635
- } else if (releaseQty <= 0) {
647
+ } else if (returnQty <= 0 || isNaN(returnQty)) {
636
648
  throw new Error(i18next.t('text.invalid_quantity_input'))
637
649
  }
638
650
  }
@@ -754,7 +766,7 @@ class CreateReturnOrder extends localize(i18next)(PageView) {
754
766
  let returnOrder = this._serializeForm(this.returnOrderForm)
755
767
  delete returnOrder.warehouseTransport
756
768
  returnOrder.orderInventories = this._getOrderInventories()
757
- returnOrder.ownTransport = this._ownTransport
769
+ returnOrder.ownTransport = this._ownTransport
758
770
  const attachments = this._document?.files ? this._document.files : undefined
759
771
  const response = await client.mutate({
760
772
  mutation: gql`
@@ -277,6 +277,12 @@ class ReceiveReturnOrderRequests extends connect(store)(localize(i18next)(PageVi
277
277
  header: i18next.t('field.product'),
278
278
  width: 150
279
279
  },
280
+ {
281
+ type: 'string',
282
+ name: 'brand',
283
+ header: i18next.t('field.brand'),
284
+ width: 150
285
+ },
280
286
  {
281
287
  type: 'string',
282
288
  name: 'packingType',
@@ -349,6 +355,7 @@ class ReceiveReturnOrderRequests extends connect(store)(localize(i18next)(PageVi
349
355
  name
350
356
  description
351
357
  sku
358
+ brand
352
359
  }
353
360
  productName
354
361
  packingType
@@ -381,7 +388,8 @@ class ReceiveReturnOrderRequests extends connect(store)(localize(i18next)(PageVi
381
388
  records: orderInventories.map(orderInventory => {
382
389
  return {
383
390
  ...orderInventory,
384
- sku: orderInventory.product.sku
391
+ sku: orderInventory.product.sku,
392
+ brand: orderInventory.product.brand
385
393
  }
386
394
  })
387
395
  }
@@ -227,11 +227,12 @@ class ReturnOrderDetail extends connect(store)(localize(i18next)(PageView)) {
227
227
  ]
228
228
  if (this._status === ORDER_STATUS.PENDING.value) {
229
229
  actions.push(
230
- {
231
- title: i18next.t('button.delete'),
232
- action: this._deleteReturnOrder.bind(this),
233
- ...CommonButtonStyles.delete
234
- },
230
+ // Issue with deletion, temporarily disable this feature
231
+ // {
232
+ // title: i18next.t('button.delete'),
233
+ // action: this._deleteReturnOrder.bind(this),
234
+ // ...CommonButtonStyles.delete
235
+ // },
235
236
  {
236
237
  title: i18next.t('button.confirm'),
237
238
  action: this._confirmReturnOrder.bind(this),
@@ -312,6 +313,12 @@ class ReturnOrderDetail extends connect(store)(localize(i18next)(PageView)) {
312
313
  header: i18next.t('field.product'),
313
314
  width: 150
314
315
  },
316
+ {
317
+ type: 'string',
318
+ name: 'brand',
319
+ header: i18next.t('field.brand'),
320
+ width: 150
321
+ },
315
322
  {
316
323
  type: 'string',
317
324
  name: 'packingType',
@@ -384,6 +391,7 @@ class ReturnOrderDetail extends connect(store)(localize(i18next)(PageView)) {
384
391
  name
385
392
  description
386
393
  sku
394
+ brand
387
395
  }
388
396
  productName
389
397
  packingType
@@ -417,7 +425,8 @@ class ReturnOrderDetail extends connect(store)(localize(i18next)(PageView)) {
417
425
  records: orderInventories.map(orderInventory => {
418
426
  return {
419
427
  ...orderInventory,
420
- sku: orderInventory.product.sku
428
+ sku: orderInventory.product.sku,
429
+ brand: orderInventory.product.brand
421
430
  }
422
431
  })
423
432
  }
@@ -154,6 +154,12 @@ class ReturnOrderInventoryPopup extends localize(i18next)(LitElement) {
154
154
  header: i18next.t('field.product_name'),
155
155
  width: 220
156
156
  },
157
+ {
158
+ type: 'string',
159
+ name: 'productBrand',
160
+ header: i18next.t('field.brand'),
161
+ width: 120
162
+ },
157
163
  {
158
164
  type: 'code',
159
165
  name: 'packingType',
@@ -233,6 +239,7 @@ class ReturnOrderInventoryPopup extends localize(i18next)(LitElement) {
233
239
  id
234
240
  }
235
241
  productName
242
+ productBrand
236
243
  packingType
237
244
  packingSize
238
245
  releaseUomValueWithUom
@@ -432,7 +432,7 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
432
432
  return {
433
433
  id: item.id,
434
434
  ...this._columns
435
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
435
+ .filter(column => column.type !== 'gutter' && column.imex !== undefined)
436
436
  .reduce((record, column) => {
437
437
  record[column.imex.key] = column.imex.key
438
438
  .split('.')
@@ -440,6 +440,9 @@ class DeliveryOrderList extends localize(i18next)(PageView) {
440
440
  if (column.type === 'datetime') {
441
441
  record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
442
442
  }
443
+ if (record[column.imex.key] === 'Invalid Date') {
444
+ record[column.imex.key] = ''
445
+ }
443
446
  return record
444
447
  }, {})
445
448
  }
@@ -21,6 +21,7 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
21
21
  productId: String,
22
22
  productName: String,
23
23
  productSku: String,
24
+ productBrand: String,
24
25
  bizplaceId: String,
25
26
  packingType: String,
26
27
  uom: String,
@@ -147,6 +148,7 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
147
148
  'picked',
148
149
  'palletId',
149
150
  'productSku',
151
+ 'productBrand',
150
152
  'product',
151
153
  'location',
152
154
  'pickedQty',
@@ -191,6 +193,12 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
191
193
  header: i18next.t('field.product'),
192
194
  width: 250
193
195
  },
196
+ {
197
+ type: 'string',
198
+ name: 'productBrand',
199
+ header: i18next.t('field.brand'),
200
+ width: 130
201
+ },
194
202
  {
195
203
  type: 'object',
196
204
  name: 'location',
@@ -256,7 +264,7 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
256
264
  $packingSize: Float!
257
265
  $uom: String!
258
266
  $pickingStrategy: String!
259
- $locationSortingRules: [Sorting]
267
+ $locationSortingRules: [Sorting!]!
260
268
  ) {
261
269
  inventoriesByStrategy(
262
270
  worksheetId: $worksheetId
@@ -267,7 +275,6 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
267
275
  packingType: $packingType
268
276
  packingSize: $packingSize
269
277
  uom: $uom
270
-
271
278
  pickingStrategy: $pickingStrategy
272
279
  locationSortingRules: $locationSortingRules
273
280
  ) {
@@ -280,6 +287,7 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
280
287
  name
281
288
  description
282
289
  sku
290
+ brand
283
291
  }
284
292
  location {
285
293
  name
@@ -316,6 +324,7 @@ class InventoryAssignPopup extends localize(i18next)(LitElement) {
316
324
  ...item,
317
325
  ...item.location,
318
326
  productSku: item.product.sku,
327
+ productBrand: item.product.brand,
319
328
  availableUomValue: item.uomValue + ' ' + item.uom
320
329
  }
321
330
  }),
@@ -138,6 +138,12 @@ class InventoryAutoAssignPopup extends localize(i18next)(LitElement) {
138
138
  header: i18next.t('field.product'),
139
139
  width: 150
140
140
  },
141
+ {
142
+ type: 'string',
143
+ name: 'productBrand',
144
+ header: i18next.t('field.brand'),
145
+ width: 100
146
+ },
141
147
  {
142
148
  type: 'string',
143
149
  name: 'packingType',
@@ -234,6 +240,7 @@ class InventoryAutoAssignPopup extends localize(i18next)(LitElement) {
234
240
  async fetchInventoriesByStrategy({ batchId, product, packingType, packingSize, uom }, pickingStrategy, bizplaceId) {
235
241
  const productName = product.name
236
242
  const productSku = product.sku
243
+ const productBrand = product.brand
237
244
  const response = await client.query({
238
245
  query: gql`
239
246
  query inventoriesByStrategy(
@@ -268,6 +275,7 @@ class InventoryAutoAssignPopup extends localize(i18next)(LitElement) {
268
275
  name
269
276
  description
270
277
  sku
278
+ brand
271
279
  }
272
280
  }
273
281
  }
@@ -292,6 +300,7 @@ class InventoryAutoAssignPopup extends localize(i18next)(LitElement) {
292
300
  ...item,
293
301
  ...item.location,
294
302
  productSku: item.product.sku,
303
+ productBrand: item.product.brand,
295
304
  releaseUomValue: item.uomValue + ' ' + item.uom
296
305
  }
297
306
  })
@@ -229,7 +229,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
229
229
  type: 'datetime',
230
230
  name: 'createdAt',
231
231
  header: i18next.t('field.created_at'),
232
- imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'datetime' },
232
+ imex: { header: i18next.t('field.created_at'), key: 'createdAt', width: 30, type: 'string' },
233
233
  sortable: true,
234
234
  width: 160
235
235
  },
@@ -237,7 +237,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
237
237
  type: 'datetime',
238
238
  name: 'startedAt',
239
239
  header: i18next.t('field.started_at'),
240
- imex: { header: i18next.t('field.started_at'), key: 'startedAt', width: 30, type: 'datetime' },
240
+ imex: { header: i18next.t('field.started_at'), key: 'startedAt', width: 30, type: 'string' },
241
241
  sortable: true,
242
242
  width: 160
243
243
  },
@@ -245,7 +245,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
245
245
  type: 'datetime',
246
246
  name: 'endedAt',
247
247
  header: i18next.t('field.ended_at'),
248
- imex: { header: i18next.t('field.ended_at'), key: 'endedAt', width: 30, type: 'datetime' },
248
+ imex: { header: i18next.t('field.ended_at'), key: 'endedAt', width: 30, type: 'string' },
249
249
  sortable: true,
250
250
  width: 160
251
251
  },
@@ -413,7 +413,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
413
413
  }
414
414
 
415
415
  var headerSetting = this.dataGrist._config.columns
416
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
416
+ .filter(column => column.type !== 'gutter' && column.imex !== undefined)
417
417
  .map(column => {
418
418
  return column.imex
419
419
  })
@@ -422,7 +422,7 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
422
422
  return {
423
423
  id: item.id,
424
424
  ...this._columns
425
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
425
+ .filter(column => column.type !== 'gutter' && column.imex !== undefined)
426
426
  .reduce((record, column) => {
427
427
  record[column.imex.key] = column.imex.key
428
428
  .split('.')
@@ -430,10 +430,14 @@ class MergedOutboundWorksheet extends localize(i18next)(PageView) {
430
430
  if (column.type === 'datetime') {
431
431
  record[column.imex.key] = new Date(parseInt(record[column.imex.key])).toLocaleString()
432
432
  }
433
+ if (record[column.imex.key] === 'Invalid Date') {
434
+ record[column.imex.key] = ''
435
+ }
433
436
  return record
434
437
  }, {})
435
438
  }
436
439
  })
440
+
437
441
  return { header: headerSetting, data: data }
438
442
  }
439
443
  }