@things-factory/operato-wms 4.3.741 → 4.3.744

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.
@@ -40,6 +40,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
40
40
  _isLooseItem: Boolean,
41
41
  _isQtyChecked: Boolean,
42
42
  _isRequiredCheckExpiry: Boolean,
43
+ _isRequiredCheckManufactureDate: Boolean,
43
44
  _isRequireSerialNumberScanningInbound: Boolean,
44
45
  _orderNo: String,
45
46
  _orderId: String,
@@ -201,6 +202,10 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
201
202
  return this.shadowRoot.querySelector('input[name=expDate]')
202
203
  }
203
204
 
205
+ get manufactureDateInput() {
206
+ return this.shadowRoot.querySelector('input[name=manufactureDate]')
207
+ }
208
+
204
209
  get inputForm() {
205
210
  return this.shadowRoot.querySelector('form#input-form')
206
211
  }
@@ -334,6 +339,21 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
334
339
  />
335
340
  `
336
341
  : ''}
342
+ ${this._isRequiredCheckManufactureDate && this.refOrderType === AVAIL_ORDER_TYPES.ARRIVAL_NOTICE.value
343
+ ? html`
344
+ <label>${i18next.t('label.manufacture_date')}</label>
345
+ <input
346
+ name="manufactureDate"
347
+ type="date"
348
+ @keypress="${async e => {
349
+ if (e.keyCode === 13) {
350
+ e.preventDefault()
351
+ await this._transactionHandler(e)
352
+ }
353
+ }}"
354
+ />
355
+ `
356
+ : ''}
337
357
  ${this._isRequiredCheckExpiry
338
358
  ? html`
339
359
  <label>${i18next.t('label.expiry_date')}</label>
@@ -403,6 +423,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
403
423
  this._isLooseItem = false
404
424
  this._isQtyChecked = false
405
425
  this._isRequiredCheckExpiry = false
426
+ this._isRequiredCheckManufactureDate = false
406
427
  this._isRequireSerialNumberScanningInbound = false
407
428
  this._orderNo = ''
408
429
  this._scanning = false
@@ -444,10 +465,16 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
444
465
  if (record && record.batchId) {
445
466
  this._selectedOrderProduct = record
446
467
  this._isRequiredCheckExpiry = record.product?.isRequiredCheckExpiry
468
+ this._isRequiredCheckManufactureDate = record.product?.isRequiredCheckManufactureDate
447
469
  this._isRequireSerialNumberScanningInbound = record.product?.isRequireSerialNumberScanningInbound
448
470
  this._isQtyChecked = false
449
471
 
450
472
  this.inputForm.reset()
473
+
474
+ if (this._isRequiredCheckManufactureDate && record.manufactureDate && this.manufactureDateInput) {
475
+ this.manufactureDateInput.value = this._formatDateForInput(record.manufactureDate)
476
+ }
477
+
451
478
  if (this._enableCartonLabel) {
452
479
  if (this._enableProductScanning) {
453
480
  this.productBarcodeInput.readOnly = false
@@ -481,7 +508,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
481
508
  'actualPalletQty',
482
509
  'packQty',
483
510
  'actualPackQty',
484
- 'manufactureDate',
511
+ 'displayManufactureDate',
485
512
  'issue'
486
513
  ]
487
514
  },
@@ -676,14 +703,14 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
676
703
  }
677
704
  },
678
705
  {
679
- type: 'date',
680
- name: 'manufactureDate',
706
+ type: 'string',
707
+ name: 'displayManufactureDate',
681
708
  label: true,
682
709
  header: i18next.t('field.manufacture_date'),
683
710
  width: 100,
684
711
  imex: {
685
- type: 'date',
686
- key: 'manufactureDate',
712
+ type: 'string',
713
+ key: 'displayManufactureDate',
687
714
  header: i18next.t('field.manufacture_date'),
688
715
  width: 25
689
716
  }
@@ -705,6 +732,56 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
705
732
  }
706
733
  }
707
734
 
735
+ _formatManufactureDate(date) {
736
+ if (!date) return date
737
+
738
+ if (!isNaN(Number(date))) {
739
+ date = Number(date)
740
+ }
741
+
742
+ const DATE_OPTIONS = {
743
+ year: 'numeric',
744
+ month: 'numeric',
745
+ day: 'numeric'
746
+ }
747
+ const formatter = new Intl.DateTimeFormat(navigator.language, DATE_OPTIONS)
748
+ return formatter.format(new Date(date))
749
+ }
750
+
751
+ _formatDateForInput(date) {
752
+ if (!date) return ''
753
+
754
+ if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(date)) {
755
+ return date
756
+ }
757
+
758
+ if (!isNaN(Number(date))) {
759
+ date = Number(date)
760
+ }
761
+
762
+ const dateObj = new Date(date)
763
+ if (isNaN(dateObj.getTime())) return ''
764
+
765
+ const year = dateObj.getFullYear()
766
+ const month = String(dateObj.getMonth() + 1).padStart(2, '0')
767
+ const day = String(dateObj.getDate()).padStart(2, '0')
768
+
769
+ return `${year}-${month}-${day}`
770
+ }
771
+
772
+ _getValidManufactureDate() {
773
+ const value = this.manufactureDateInput?.value
774
+ if (!value || value.trim() === '') return null
775
+
776
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/
777
+ if (!dateRegex.test(value)) return null
778
+
779
+ const date = new Date(value)
780
+ if (isNaN(date.getTime())) return null
781
+
782
+ return value
783
+ }
784
+
708
785
  async _fetchProducts(orderNo, response) {
709
786
  if (this.refOrderType === AVAIL_ORDER_TYPES.ARRIVAL_NOTICE.value) {
710
787
  const response = await client.query({
@@ -751,6 +828,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
751
828
  name
752
829
  description
753
830
  isRequiredCheckExpiry
831
+ isRequiredCheckManufactureDate
754
832
  isRequireSerialNumberScanningInbound
755
833
  isInventoryDecimal
756
834
  minInboundShelfLife
@@ -894,6 +972,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
894
972
  description
895
973
  sku
896
974
  isRequiredCheckExpiry
975
+ isRequiredCheckManufactureDate
897
976
  isRequireSerialNumberScanningInbound
898
977
  isInventoryDecimal
899
978
  minInboundShelfLife
@@ -978,6 +1057,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
978
1057
  name
979
1058
  sku
980
1059
  isRequiredCheckExpiry
1060
+ isRequiredCheckManufactureDate
981
1061
  isRequireSerialNumberScanningInbound
982
1062
  }
983
1063
  reusablePallet {
@@ -1005,6 +1085,27 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1005
1085
  .reduce((a, b) => a + b, 0)
1006
1086
  }
1007
1087
 
1088
+ const matchingInventories = this._unloadedInventories.filter(
1089
+ inventory =>
1090
+ inventory.batchId == orderProduct.batchId &&
1091
+ inventory?.product.sku == orderProduct.sku &&
1092
+ inventory.packingType == orderProduct.packingType &&
1093
+ inventory.packingSize == orderProduct.packingSize
1094
+ )
1095
+
1096
+ if (matchingInventories.length > 0) {
1097
+ const manufactureDates = matchingInventories
1098
+ .map(inv => inv.manufactureDate)
1099
+ .filter(date => date != null && date !== '')
1100
+ .map(date => this._formatManufactureDate(date))
1101
+ .filter((date, index, self) => self.indexOf(date) === index)
1102
+ .sort()
1103
+
1104
+ orderProduct.displayManufactureDate = manufactureDates.length > 0 ? manufactureDates.join(', ') : (orderProduct.manufactureDate ? this._formatManufactureDate(orderProduct.manufactureDate) : null)
1105
+ } else if (orderProduct.manufactureDate) {
1106
+ orderProduct.displayManufactureDate = this._formatManufactureDate(orderProduct.manufactureDate)
1107
+ }
1108
+
1008
1109
  return orderProduct
1009
1110
  })
1010
1111
  }
@@ -1023,6 +1124,14 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1023
1124
  this._focusOnExpiryDateInput()
1024
1125
  }
1025
1126
 
1127
+ if (this._selectedOrderProduct?.isRequiredCheckManufactureDate && !this._isRequireSerialNumberScanningInbound)
1128
+ this.manufactureDateInput.value = null
1129
+
1130
+ if (this._isRequiredCheckManufactureDate && !this._isRequireSerialNumberScanningInbound) {
1131
+ this.manufactureDateInput.value = null
1132
+ this._focusOnManufactureDateInput()
1133
+ }
1134
+
1026
1135
  if (this._enableCartonLabel) {
1027
1136
  if (this._isRequireSerialNumberScanningInbound) {
1028
1137
  if (this.cartonInput.value == '') {
@@ -1131,7 +1240,8 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1131
1240
  inventory: {
1132
1241
  palletId: this._enableCartonLabel ? null : this.lotInput.value.trim(),
1133
1242
  cartonId: this._enableCartonLabel ? this.cartonInput.value.trim() : null,
1134
- expirationDate: this._isRequiredCheckExpiry ? this.expDateInput.value : null
1243
+ expirationDate: this._isRequiredCheckExpiry ? this.expDateInput.value : null,
1244
+ manufactureDate: this._isRequiredCheckManufactureDate ? this._getValidManufactureDate() : null
1135
1245
  }
1136
1246
  }
1137
1247
  })
@@ -1188,7 +1298,8 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1188
1298
  inventory: {
1189
1299
  palletId: this._enableCartonLabel ? null : this.lotInput.value.trim(),
1190
1300
  cartonId: this._enableCartonLabel ? this.cartonInput.value.trim() : null,
1191
- expirationDate: this._isRequiredCheckExpiry ? this.expDateInput.value : null
1301
+ expirationDate: this._isRequiredCheckExpiry ? this.expDateInput.value : null,
1302
+ manufactureDate: this._isRequiredCheckManufactureDate ? this._getValidManufactureDate() : null
1192
1303
  }
1193
1304
  }
1194
1305
  })
@@ -1283,6 +1394,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1283
1394
  cartonId: this._enableCartonLabel ? this.cartonInput.value.trim() : null,
1284
1395
  qty: qty, // Use the validated qty
1285
1396
  expirationDate: this._isRequiredCheckExpiry ? this.expDateInput.value : null,
1397
+ manufactureDate: this._isRequiredCheckManufactureDate ? this._getValidManufactureDate() : null,
1286
1398
  reusablePallet: this._usingReusablePallet ? this._reusablePallet : null
1287
1399
  },
1288
1400
  productBarcode: this._enableProductScanning
@@ -1316,6 +1428,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1316
1428
  name
1317
1429
  sku
1318
1430
  isRequiredCheckExpiry
1431
+ isRequiredCheckManufactureDate
1319
1432
  isRequireSerialNumberScanningInbound
1320
1433
  isInventoryDecimal
1321
1434
  minInboundShelfLife
@@ -1347,6 +1460,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1347
1460
  name
1348
1461
  sku
1349
1462
  isRequiredCheckExpiry
1463
+ isRequiredCheckManufactureDate
1350
1464
  isRequireSerialNumberScanningInbound
1351
1465
  isInventoryDecimal
1352
1466
  minInboundShelfLife
@@ -1423,6 +1537,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1423
1537
 
1424
1538
  if (foundOrderProducts?.length > 1) {
1425
1539
  if (foundOrderProducts.some(op => op.product.isRequiredCheckExpiry)) this._isRequiredCheckExpiry = true
1540
+ if (foundOrderProducts.some(op => op.product.isRequiredCheckManufactureDate)) this._isRequiredCheckManufactureDate = true
1426
1541
 
1427
1542
  if (this._isRequireSerialNumberScanningInbound) {
1428
1543
  if (!this._selectedOrderProduct) {
@@ -1434,11 +1549,13 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1434
1549
  } else if (foundOrderProducts?.length == 1) {
1435
1550
  this.__minInboundShelfLife = product.minInboundShelfLife
1436
1551
  this._isRequiredCheckExpiry = product.isRequiredCheckExpiry
1552
+ this._isRequiredCheckManufactureDate = product.isRequiredCheckManufactureDate
1437
1553
  this._isRequireSerialNumberScanningInbound = product.isRequireSerialNumberScanningInbound
1438
1554
  this._selectedOrderProduct = foundOrderProducts[0]
1439
1555
  } else if (foundOrderProducts?.length == 0 && foundParentProducts?.length > 0) {
1440
1556
  this.__minInboundShelfLife = product.minInboundShelfLife
1441
1557
  this._isRequiredCheckExpiry = product.isRequiredCheckExpiry
1558
+ this._isRequiredCheckManufactureDate = product.isRequiredCheckManufactureDate
1442
1559
  this._isRequireSerialNumberScanningInbound = product.isRequireSerialNumberScanningInbound
1443
1560
  this._selectedOrderProduct = foundParentProducts[0]
1444
1561
  }
@@ -1456,6 +1573,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1456
1573
  this._selectedOrderProduct = e.detail
1457
1574
  this.__minInboundShelfLife = this._selectedOrderProduct.product.minInboundShelfLife
1458
1575
  this._isRequiredCheckExpiry = this._selectedOrderProduct.product.isRequiredCheckExpiry
1576
+ this._isRequiredCheckManufactureDate = this._selectedOrderProduct.product.isRequiredCheckManufactureDate
1459
1577
  this._isRequireSerialNumberScanningInbound =
1460
1578
  this._selectedOrderProduct.product.isRequireSerialNumberScanningInbound
1461
1579
  if (e.detail.product.isRequireSerialNumberScanningInbound) {
@@ -1533,6 +1651,19 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1533
1651
  await this._checkExpiryFormat()
1534
1652
  }
1535
1653
 
1654
+ if (this._isRequiredCheckManufactureDate && this.manufactureDateInput?.value) {
1655
+ const value = this.manufactureDateInput.value
1656
+ const today = new Date()
1657
+ today.setHours(0, 0, 0, 0)
1658
+ const manufactureDate = new Date(value)
1659
+ manufactureDate.setHours(0, 0, 0, 0)
1660
+
1661
+ if (manufactureDate > today) {
1662
+ this._focusOnManufactureDateInput()
1663
+ throw new Error(i18next.t('text.manufacture-date-cannot-be-later-than-today'))
1664
+ }
1665
+ }
1666
+
1536
1667
  if (this._pageSettings.enableLotIdInput) {
1537
1668
  await this._checkLotInput()
1538
1669
  }
@@ -1578,6 +1709,19 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1578
1709
  await this._checkExpiryFormat()
1579
1710
  }
1580
1711
 
1712
+ if (this._isRequiredCheckManufactureDate && this.manufactureDateInput?.value) {
1713
+ const value = this.manufactureDateInput.value
1714
+ const today = new Date()
1715
+ today.setHours(0, 0, 0, 0)
1716
+ const manufactureDate = new Date(value)
1717
+ manufactureDate.setHours(0, 0, 0, 0)
1718
+
1719
+ if (manufactureDate > today) {
1720
+ this._focusOnManufactureDateInput()
1721
+ throw new Error(i18next.t('text.manufacture-date-cannot-be-later-than-today'))
1722
+ }
1723
+ }
1724
+
1581
1725
  return orderProducts
1582
1726
  }
1583
1727
  }
@@ -1710,7 +1854,8 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1710
1854
  inventory: {
1711
1855
  palletId: this._enableCartonLabel ? null : this.lotInput.value.trim(),
1712
1856
  cartonId: this._enableCartonLabel ? this.cartonInput.value.trim() : null,
1713
- expirationDate: this.expDateInput?.value ? this.expDateInput.value : null
1857
+ expirationDate: this.expDateInput?.value ? this.expDateInput.value : null,
1858
+ manufactureDate: this.manufactureDateInput?.value ? this.manufactureDateInput.value : null
1714
1859
  }
1715
1860
  }
1716
1861
  })
@@ -1975,6 +2120,10 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
1975
2120
  setTimeout(() => this.expDateInput.focus(), 100)
1976
2121
  }
1977
2122
 
2123
+ _focusOnManufactureDateInput() {
2124
+ setTimeout(() => this.manufactureDateInput.focus(), 100)
2125
+ }
2126
+
1978
2127
  _focusOnProductBarcodeInput() {
1979
2128
  this.productBarcodeInput.readOnly = false
1980
2129
  setTimeout(() => this.productBarcodeInput.focus(), 100)
@@ -70,7 +70,7 @@ class UnloadedInventoriesPopup extends connect(store)(localize(i18next)(LitEleme
70
70
  this.config = {
71
71
  rows: { appendable: false },
72
72
  list: {
73
- fields: ['palletId', 'cartonId', 'qty', 'expirationDate', 'reusablePallet']
73
+ fields: ['palletId', 'cartonId', 'qty', 'expirationDate', 'manufactureDate', 'reusablePallet']
74
74
  },
75
75
  pagination: { infinite: true },
76
76
  columns: [
@@ -44,6 +44,9 @@ const FIND_LOADABLE_RELEASE_GOOD = gql`
44
44
  attentionTo
45
45
  deliveryAddress1
46
46
  deliveryAddress2
47
+ deliveryAddress3
48
+ deliveryAddress4
49
+ deliveryAddress5
47
50
  sortedBy {
48
51
  name
49
52
  }
@@ -459,10 +462,22 @@ class LoadingProductV2 extends connect(store)(localize(i18next)(PageView)) {
459
462
  }
460
463
 
461
464
  async selectReleaseOrderPopup(orders) {
462
- let releaseGoods = orders.map(ro => ({
463
- ...ro,
464
- sortedByUser: ro.sortedBy?.name
465
- }))
465
+ let releaseGoods = orders.map(ro => {
466
+ const addressParts = [
467
+ ro.deliveryAddress1,
468
+ ro.deliveryAddress2,
469
+ ro.deliveryAddress3,
470
+ ro.deliveryAddress4,
471
+ ro.deliveryAddress5
472
+ ].filter(addr => addr && addr.trim() !== '')
473
+ .map(addr => addr.trim().replace(/,+\s*$/, ''))
474
+
475
+ return {
476
+ ...ro,
477
+ sortedByUser: ro.sortedBy?.name,
478
+ address: addressParts.join(', ')
479
+ }
480
+ })
466
481
 
467
482
  await sleep(1010)
468
483
  openPopup(
@@ -146,7 +146,7 @@ class ShowRoListPopup extends localize(i18next)(LitElement) {
146
146
  rows: { selectable: { multiple: false }, appendable: false },
147
147
  pagination: { infinite: true },
148
148
  list: {
149
- fields: ['name', 'refNo', 'refNo2', 'district', 'attentionCompany', 'status', 'sortedByUser', 'itemCounts']
149
+ fields: ['name', 'refNo', 'refNo2', 'district', 'attentionCompany', 'address', 'status', 'sortedByUser', 'itemCounts']
150
150
  },
151
151
  columns: [
152
152
  { type: 'gutter', gutterName: 'sequence' },
@@ -186,6 +186,13 @@ class ShowRoListPopup extends localize(i18next)(LitElement) {
186
186
  label: true,
187
187
  width: 120
188
188
  },
189
+ {
190
+ type: 'string',
191
+ name: 'address',
192
+ header: i18next.t('field.address'),
193
+ label: true,
194
+ width: 200
195
+ },
189
196
  {
190
197
  type: 'string',
191
198
  name: 'status',
@@ -389,6 +389,11 @@ class SortingProduct extends connect(store)(localize(i18next)(PageView)) {
389
389
  status
390
390
  district
391
391
  attentionCompany
392
+ deliveryAddress1
393
+ deliveryAddress2
394
+ deliveryAddress3
395
+ deliveryAddress4
396
+ deliveryAddress5
392
397
  sortedByUser
393
398
  }
394
399
  selectedReleaseGood
@@ -401,7 +406,21 @@ class SortingProduct extends connect(store)(localize(i18next)(PageView)) {
401
406
 
402
407
  if (!response.errors) {
403
408
  this.taskNo = response.data.findSortingReleaseOrdersByTaskNo.taskNo
404
- this.releaseOrders = response.data.findSortingReleaseOrdersByTaskNo.releaseGoods
409
+ this.releaseOrders = response.data.findSortingReleaseOrdersByTaskNo.releaseGoods.map(ro => {
410
+ const addressParts = [
411
+ ro.deliveryAddress1,
412
+ ro.deliveryAddress2,
413
+ ro.deliveryAddress3,
414
+ ro.deliveryAddress4,
415
+ ro.deliveryAddress5
416
+ ].filter(addr => addr && addr.trim() !== '')
417
+ .map(addr => addr.trim().replace(/,+\s*$/, ''))
418
+
419
+ return {
420
+ ...ro,
421
+ address: addressParts.join(', ')
422
+ }
423
+ })
405
424
 
406
425
  if (response.data.findSortingReleaseOrdersByTaskNo?.selectedReleaseGood) {
407
426
  await this._setSelectedRO(response.data.findSortingReleaseOrdersByTaskNo.selectedReleaseGood)
@@ -4,31 +4,30 @@ module.exports = {
4
4
  useVirtualHostBasedDomain: false,
5
5
  fallbackRoute: '/',
6
6
  subdomainOffset: 2,
7
- port: 4002,
7
+ port: 4000,
8
8
  inspect: '9330',
9
- // postgres2
10
- // ormconfig: {
11
- // name: 'default',
12
- // type: 'postgres',
13
- // database: 'postgres',
14
- // username: 'postgres',
15
- // password: 'hatio',
16
- // host: '192.168.0.151',
17
- // port: 15432,
18
- // synchronize: false,
19
- // logging: true
20
- // },
9
+
10
+ storage: {
11
+ type: 's3',
12
+ accessKeyId: 'AKIAUQEOPWEJHCE4MTH4',
13
+ secretAccessKey: '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',
14
+ bucketName: 'opa-one',
15
+ region: 'ap-southeast-1'
16
+ },
17
+ // arif
21
18
  // ormconfig: {
22
19
  // name: 'default',
23
20
  // type: 'postgres',
24
- // database: 'postgres',
21
+ // database: 'arif',
25
22
  // username: 'postgres',
26
23
  // password: 'hatio',
27
- // host: '192.168.0.144',
24
+ // host: '10.254.29.189',
28
25
  // port: 15432,
29
26
  // synchronize: false,
30
27
  // logging: true
31
28
  // },
29
+
30
+ // STAGING DATABASE
32
31
  ormconfig: {
33
32
  name: 'default',
34
33
  type: 'postgres',
@@ -40,72 +39,37 @@ module.exports = {
40
39
  synchronize: false,
41
40
  logging: true
42
41
  },
43
- // // sum //live db important
44
- // ormconfig: {
45
- // name: 'default',
46
- // type: 'postgres',
47
- // database: 'postgres',
48
- // username: 'sum',
49
- // password: 'hatio1234',
50
- // host: 'my-operato-pg.cjcso4qmeuq0.ap-southeast-5.rds.amazonaws.com',
51
- // port: 55432,
52
- // synchronize: false,
53
- // logging: false
54
- // },
55
-
56
42
 
57
43
  // ormconfig: {
58
44
  // name: 'default',
59
45
  // type: 'postgres',
60
- // database: 'operato-eric',
61
- // username: 'postgres',
62
- // password: 'hatio',
63
- // host: '192.168.0.248',
64
- // port: 15432,
65
- // synchronize: false,
66
- // logging: true
67
- // },
68
- //operato
69
- // ormconfig: {
70
- // name: 'default',
71
- // type: 'postgres',
72
- // database: 'operato',
73
- // username: 'postgres',
74
- // password: 'hatio',
75
- // host: '192.168.0.151',
76
- // port: 15432,
77
- // synchronize: false,
78
- // logging: true
79
- // },
80
- //153 - operato
81
- // ormconfig: {
82
- // name: 'default',
83
- // type: 'postgres',
84
- // database: 'operato',
46
+ // host: 'operatov3.cluster-cijhm4n1hbst.ap-southeast-1.rds.amazonaws.com',
47
+ // port: 55432,
48
+ // database: 'postgres',
85
49
  // username: 'postgres',
86
- // password: 'hatio',
87
- // host: '192.168.0.153',
88
- // port: 15432,
50
+ // password: 'abcd1234',
89
51
  // synchronize: false,
90
- // logging: true
52
+ // logging: true,
53
+ // connectTimeoutMS: 30000,
54
+ // extra: { poolSize: 30 }
91
55
  // },
92
- //eric2
56
+
57
+ //db izzah
93
58
  // ormconfig: {
94
59
  // name: 'default',
95
60
  // type: 'postgres',
96
- // database: 'eric2',
61
+ // database: '06072023',
97
62
  // username: 'postgres',
98
63
  // password: 'hatio',
99
64
  // host: '192.168.0.153',
100
- // port: 15432,
101
- // synchronize: false,
65
+ // port: 15432,f
66
+ // synchronize: true,
102
67
  // logging: true
103
68
  // },
104
- // arif's
105
69
  // ormconfig: {
106
70
  // name: 'default',
107
71
  // type: 'postgres',
108
- // database: 'arif',
72
+ // database: 'postgres',
109
73
  // username: 'postgres',
110
74
  // password: 'hatio',
111
75
  // host: '192.168.0.151',
@@ -113,30 +77,8 @@ module.exports = {
113
77
  // synchronize: false,
114
78
  // logging: true
115
79
  // },
116
- //EMS
117
- // ormconfig: {
118
- // name: 'default',
119
- // type: 'postgres',
120
- // database: 'EMS',
121
- // username: 'postgres',
122
- // password: 'hatio',
123
- // host: '192.168.0.161',
124
- // port: 15432,
125
- // synchronize: false,
126
- // logging: true
127
- // },
128
- //db nora
129
- // ormconfig: {
130
- // name: 'default',
131
- // type: 'postgres',
132
- // database: 'postgres',
133
- // username: 'postgres',
134
- // password: 'hatio',
135
- // host: '192.168.0.36',
136
- // port: 15432,
137
- // synchronize: true,
138
- // logging: true
139
- // },
80
+
81
+ // //ERIC
140
82
  // ormconfig: {
141
83
  // name: 'default',
142
84
  // type: 'postgres',
@@ -145,14 +87,15 @@ module.exports = {
145
87
  // password: 'hatio',
146
88
  // host: '192.168.0.153',
147
89
  // port: 15432,
148
- // synchronize: true,
90
+ // synchronize: false,
149
91
  // logging: true
150
92
  // },
151
- //db izzah
93
+
94
+ //eric 2
152
95
  // ormconfig: {
153
96
  // name: 'default',
154
97
  // type: 'postgres',
155
- // database: '06072023',
98
+ // database: 'eric2',
156
99
  // username: 'postgres',
157
100
  // password: 'hatio',
158
101
  // host: '192.168.0.153',
@@ -160,6 +103,7 @@ module.exports = {
160
103
  // synchronize: false,
161
104
  // logging: true
162
105
  // },
106
+
163
107
  // ormconfig: {
164
108
  // name: 'default',
165
109
  // type: 'postgres',
@@ -248,72 +192,30 @@ module.exports = {
248
192
  // privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
249
193
  // }
250
194
  },
251
- fulfillmentIntegrationOperato: {
252
- host: '192.168.0.161:3000',
253
- protocol: 'http',
254
- platform: 'operato',
255
- application: 'Operato MMS',
256
- appKey: 'a9bf751e622bf146662b240d58971051',
257
- appSecret: '1c385935dc131c4b902b9bbf6a4798af',
258
- callback: 'http://192.168.0.161:5000/callback-operato'
259
- },
260
- lmdIntegrationNinjavan: {
261
- clientId: 'P8WCEwMo0FHNlPECwTLetwN3diAmt5KF',
262
- secretKey: '1D0yNZGseOjhxnwri29xmuZiiuRp131L',
263
- refreshThreshold: 43200
264
- },
265
-
266
- lmdIntegrationEms: { refreshThreshold: 43200 },
267
- marketplaceIntegrationShopee: {
268
- platform: 'shopee',
269
- isUAT: false,
270
- application: 'Operato MMS',
271
- partnerId: 846025,
272
- partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64',
273
- v2: true
274
- },
275
- marketplaceIntegrationLazada: {
276
- platform: 'lazada',
277
- application: 'operato-mms',
278
- appKey: '120961',
279
- appSecret: 'HB3RTNEXHlVSlBr9SmWF8AjbSUT7a825',
280
- callback: 'https://maybank.operato-m.com/lazada-callback'
281
- },
282
-
283
- //testinglazada
284
- // marketplaceIntegrationLazada: {
285
- // platform: 'lazada',
286
- // application: 'powrup_bi',
287
- // appKey: '117890',
288
- // appSecret: 'tQVllnUa7irAHoNxAwXEVxoP1we1bUjE',
289
- // callback: 'https://73c5-175-141-30-142.ngrok-free.app/lazada-callback'
290
- // },
291
- reportApiUrl: 'http://localhost:8888/rest/report/show_html',
292
- // reportApiUrl: 'http://192.168.0.153:8888/rest/report/show_html'
195
+ // reportApiUrl:
196
+ // 'http://k8s-default-operator-8eeba2e246-3e3a5ee7979bcd57.elb.ap-southeast-1.amazonaws.com/rest/report/show_html',
197
+ // reportApiUrl: 'http://192.168.0.153:8888/rest/report/show_html',
198
+ // reportApiUrl: 'http://192.168.0.153:8888/rest/report/show_html',
293
199
  // reportApiUrl: 'http://10.100.109.66:8090/rest/report/show_html',
294
200
  awbFileStorage: {
295
201
  type: 's3',
296
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
297
- secretAccessKey: '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',
202
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
203
+ secretAccessKey: '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',
298
204
  bucketName: 'operato-awb',
299
205
  region: 'ap-southeast-1'
300
206
  },
207
+ invoiceFileStorage: {
208
+ type: 's3',
209
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
210
+ secretAccessKey: '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',
211
+ invoiceBucket: 'operato-invoice',
212
+ region: 'ap-southeast-1'
213
+ },
301
214
  lambda: {
302
215
  region: 'ap-southeast-1',
303
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
304
- secretAccessKey: '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'
305
- },
306
- lmdIntegrationConfig: {
307
- version: {
308
- v1: 'lmdMiddleware',
309
- v2: 'lmdMiddlewareV2'
310
- }
311
- },
312
- awsSesEmail: {
313
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
314
- secretAccessKey: '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',
315
- email: 'support@hatio.asia'
216
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
217
+ secretAccessKey: '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'
316
218
  },
317
219
  reportApiUrl:
318
- 'http://k8s-default-operator-2fd6178d98-66c66a0f76c09575.elb.ap-southeast-1.amazonaws.com/rest/report/show_html'
220
+ 'http://k8s-default-operator-8eeba2e246-3e3a5ee7979bcd57.elb.ap-southeast-1.amazonaws.com/rest/report/show_html'
319
221
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-wms",
3
- "version": "4.3.741",
3
+ "version": "4.3.744",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -62,60 +62,60 @@
62
62
  "@operato/scene-tab": "^0.1.8",
63
63
  "@operato/scene-table": "^0.1.8",
64
64
  "@operato/scene-wheel-sorter": "^0.1.8",
65
- "@things-factory/apptool-ui": "^4.3.740",
66
- "@things-factory/attachment-ui": "^4.3.740",
67
- "@things-factory/auth-ui": "^4.3.740",
68
- "@things-factory/barcode-ui": "^4.3.740",
69
- "@things-factory/biz-ui": "^4.3.740",
70
- "@things-factory/board-service": "^4.3.740",
71
- "@things-factory/board-ui": "^4.3.740",
72
- "@things-factory/code-ui": "^4.3.740",
73
- "@things-factory/context-ui": "^4.3.740",
74
- "@things-factory/export-ui": "^4.3.740",
75
- "@things-factory/export-ui-csv": "^4.3.740",
76
- "@things-factory/export-ui-excel": "^4.3.740",
77
- "@things-factory/fav-base": "^4.3.740",
78
- "@things-factory/form-ui": "^4.3.740",
79
- "@things-factory/geography": "^4.3.740",
80
- "@things-factory/grist-ui": "^4.3.740",
81
- "@things-factory/help": "^4.3.740",
82
- "@things-factory/i18n-base": "^4.3.740",
83
- "@things-factory/id-rule-base": "^4.3.740",
84
- "@things-factory/import-ui": "^4.3.740",
85
- "@things-factory/import-ui-excel": "^4.3.740",
86
- "@things-factory/menu-ui": "^4.3.740",
87
- "@things-factory/more-ui": "^4.3.740",
88
- "@things-factory/notification": "^4.3.740",
89
- "@things-factory/pdf": "^4.3.740",
90
- "@things-factory/print-proxy-service": "^4.3.740",
91
- "@things-factory/print-ui": "^4.3.740",
92
- "@things-factory/product-base": "^4.3.740",
93
- "@things-factory/resource-ui": "^4.3.740",
94
- "@things-factory/sales-ui": "^4.3.740",
95
- "@things-factory/scene-data-transform": "^4.3.740",
96
- "@things-factory/scene-excel": "^4.3.740",
97
- "@things-factory/scene-firebase": "^4.3.740",
98
- "@things-factory/scene-form": "^4.3.740",
99
- "@things-factory/scene-google-map": "^4.3.740",
100
- "@things-factory/scene-graphql": "^4.3.740",
101
- "@things-factory/scene-label": "^4.3.740",
102
- "@things-factory/scene-marker": "^4.3.740",
103
- "@things-factory/scene-mqtt": "^4.3.740",
104
- "@things-factory/scene-restful": "^4.3.740",
105
- "@things-factory/scene-visualizer": "^4.3.740",
106
- "@things-factory/setting-ui": "^4.3.740",
107
- "@things-factory/system-ui": "^4.3.740",
108
- "@things-factory/transport-base": "^4.3.740",
109
- "@things-factory/tutorial-ui": "^4.3.740",
110
- "@things-factory/warehouse-base": "^4.3.740",
111
- "@things-factory/worksheet-base": "^4.3.741"
65
+ "@things-factory/apptool-ui": "^4.3.743",
66
+ "@things-factory/attachment-ui": "^4.3.743",
67
+ "@things-factory/auth-ui": "^4.3.743",
68
+ "@things-factory/barcode-ui": "^4.3.743",
69
+ "@things-factory/biz-ui": "^4.3.743",
70
+ "@things-factory/board-service": "^4.3.743",
71
+ "@things-factory/board-ui": "^4.3.743",
72
+ "@things-factory/code-ui": "^4.3.743",
73
+ "@things-factory/context-ui": "^4.3.743",
74
+ "@things-factory/export-ui": "^4.3.743",
75
+ "@things-factory/export-ui-csv": "^4.3.743",
76
+ "@things-factory/export-ui-excel": "^4.3.743",
77
+ "@things-factory/fav-base": "^4.3.743",
78
+ "@things-factory/form-ui": "^4.3.743",
79
+ "@things-factory/geography": "^4.3.743",
80
+ "@things-factory/grist-ui": "^4.3.743",
81
+ "@things-factory/help": "^4.3.743",
82
+ "@things-factory/i18n-base": "^4.3.743",
83
+ "@things-factory/id-rule-base": "^4.3.743",
84
+ "@things-factory/import-ui": "^4.3.743",
85
+ "@things-factory/import-ui-excel": "^4.3.743",
86
+ "@things-factory/menu-ui": "^4.3.743",
87
+ "@things-factory/more-ui": "^4.3.743",
88
+ "@things-factory/notification": "^4.3.743",
89
+ "@things-factory/pdf": "^4.3.743",
90
+ "@things-factory/print-proxy-service": "^4.3.743",
91
+ "@things-factory/print-ui": "^4.3.743",
92
+ "@things-factory/product-base": "^4.3.743",
93
+ "@things-factory/resource-ui": "^4.3.743",
94
+ "@things-factory/sales-ui": "^4.3.743",
95
+ "@things-factory/scene-data-transform": "^4.3.743",
96
+ "@things-factory/scene-excel": "^4.3.743",
97
+ "@things-factory/scene-firebase": "^4.3.743",
98
+ "@things-factory/scene-form": "^4.3.743",
99
+ "@things-factory/scene-google-map": "^4.3.743",
100
+ "@things-factory/scene-graphql": "^4.3.743",
101
+ "@things-factory/scene-label": "^4.3.743",
102
+ "@things-factory/scene-marker": "^4.3.743",
103
+ "@things-factory/scene-mqtt": "^4.3.743",
104
+ "@things-factory/scene-restful": "^4.3.743",
105
+ "@things-factory/scene-visualizer": "^4.3.743",
106
+ "@things-factory/setting-ui": "^4.3.743",
107
+ "@things-factory/system-ui": "^4.3.743",
108
+ "@things-factory/transport-base": "^4.3.743",
109
+ "@things-factory/tutorial-ui": "^4.3.743",
110
+ "@things-factory/warehouse-base": "^4.3.743",
111
+ "@things-factory/worksheet-base": "^4.3.744"
112
112
  },
113
113
  "devDependencies": {
114
- "@things-factory/builder": "^4.3.740",
114
+ "@things-factory/builder": "^4.3.743",
115
115
  "cypress": "^9.4.1",
116
116
  "cypress-file-upload": "^5.0.8",
117
117
  "cypress-localstorage-commands": "^1.6.1",
118
118
  "eslint-plugin-cypress": "^2.12.1"
119
119
  },
120
- "gitHead": "97de9f3e63d7acdb0e59eff61f5c170457582490"
120
+ "gitHead": "1519990fa45b1edfdfa52b0ac3748b841fb18afd"
121
121
  }
@@ -969,6 +969,7 @@
969
969
  "label.execute_date": "execute date",
970
970
  "label.executing": "executing",
971
971
  "label.expiry_date": "expiry date",
972
+ "label.manufacture_date": "manufacture date",
972
973
  "label.export": "export",
973
974
  "label.export_remark": "export remark",
974
975
  "label.fax": "fax",
@@ -953,6 +953,7 @@
953
953
  "label.execute_date": "수행일",
954
954
  "label.executing": "수행중",
955
955
  "label.expiry_date": "유통기한",
956
+ "label.manufacture_date": "제조일",
956
957
  "label.export_remark": "export remark",
957
958
  "label.export": "수출",
958
959
  "label.fax": "팩스",
@@ -996,6 +996,7 @@
996
996
  "label.execute_date": "执行日期",
997
997
  "label.executing": "执行中",
998
998
  "label.expiry_date": "过期日期",
999
+ "label.manufacture_date": "制造日期",
999
1000
  "label.export": "出口",
1000
1001
  "label.export_remark": "出口备注",
1001
1002
  "label.fax": "传真",