@things-factory/operato-wms 4.3.789 → 4.3.791

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.
@@ -1304,56 +1304,107 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1304
1304
  try {
1305
1305
  patches = patches.map(patch => normalizeInventoryPatch(patch))
1306
1306
 
1307
- patches.map(itm => {
1307
+ const validAdjustmentCodes = new Set(
1308
+ Object.values(ADJUSTMENT_CODE).map(ac => ac.value)
1309
+ )
1310
+
1311
+ // Fetch fresh locations for client-side validation (avoid stale cache)
1312
+ await this.fetchLocation()
1313
+ const locationNameSet = new Set((this._locations || []).map(l => l.name))
1314
+
1315
+ patches.forEach(itm => {
1316
+ const errors = []
1317
+ delete itm.errMsg
1318
+
1308
1319
  if (toFloatOrUndefined(itm?.uomValue) < 0) {
1309
- throw new Error(i18next.t('text.invalid_uom_value'))
1320
+ errors.push(i18next.t('text.invalid_uom_value'))
1310
1321
  }
1311
1322
  if (toFloatOrUndefined(itm?.qty) < 0) {
1312
- throw new Error(i18next.t('text.invalid_qty'))
1323
+ errors.push(i18next.t('text.invalid_qty'))
1313
1324
  }
1314
1325
  if (itm?.packingType?.trim() == '') {
1315
- throw new Error(i18next.t('text.invalid_packing_type'))
1326
+ errors.push(i18next.t('text.invalid_packing_type'))
1316
1327
  }
1317
1328
  if (toFloatOrUndefined(itm?.unitCost) < 0) {
1318
- throw new Error(i18next.t('text.invalid_unit_cost'))
1329
+ errors.push(i18next.t('text.invalid_unit_cost'))
1319
1330
  }
1320
1331
  if (new Date(itm?.manufactureDate) > new Date()) {
1321
- throw new Error(i18next.t('text.invalid_manufacture_date'))
1332
+ errors.push(i18next.t('text.invalid_manufacture_date'))
1322
1333
  }
1323
- if (
1324
- itm?.adjustmentCode?.trim() == '' ||
1325
- (itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC01.value &&
1326
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC02.value &&
1327
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC03.value &&
1328
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC04.value &&
1329
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC05.value &&
1330
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC06.value &&
1331
- itm?.adjustmentCode?.trim() != ADJUSTMENT_CODE.AC07.value)
1332
- ) {
1333
- throw new Error(i18next.t('text.adjustment_code_is_required_kindly_fill_in_the_adjustment_code_to_continue'))
1334
+ if (!itm?.adjustmentCode?.trim() || !validAdjustmentCodes.has(itm.adjustmentCode.trim())) {
1335
+ errors.push(i18next.t('text.adjustment_code_is_required_kindly_fill_in_the_adjustment_code_to_continue'))
1334
1336
  }
1335
1337
  if (itm?.adjustmentNote?.trim() == '') {
1336
- throw new Error(i18next.t('text.invalid_adjustment_note'))
1338
+ errors.push(i18next.t('text.invalid_adjustment_note'))
1339
+ }
1340
+
1341
+ // Validate location for all rows
1342
+ if (!itm?.location || !itm?.location?.name) {
1343
+ errors.push(i18next.t('text.location_is_required_kindly_fill_in_the_location_to_continue'))
1344
+ } else if (!locationNameSet.has(itm.location.name)) {
1345
+ errors.push(`${i18next.t('text.location_not_found')}: ${itm.location.name}`)
1337
1346
  }
1338
1347
 
1339
1348
  if (itm.cuFlag == '+') {
1340
- this.validation(itm)
1349
+ if (!itm?.batchId) {
1350
+ errors.push(i18next.t('text.batch_no_is_required_kindly_fill_in_the_batch_no_to_continue'))
1351
+ }
1352
+ if (!itm?.bizplace || !itm?.bizplace?.id) {
1353
+ errors.push(i18next.t('text.company_is_required_kindly_fill_in_the_company_to_continue'))
1354
+ }
1355
+ if (!itm?.qty) {
1356
+ errors.push(i18next.t('text.qty_is_required_kindly_fill_in_the_qty_to_continue'))
1357
+ }
1358
+ if (!itm?.uomValue) {
1359
+ errors.push(i18next.t('text.total_uom_value_is_required_kindly_fill_in_the_total_uom_value_to_continue'))
1360
+ }
1361
+ if (!itm?.adjustmentCode) {
1362
+ // already checked above, but keep for cuFlag '+' specific check
1363
+ }
1364
+ if (!itm?.adjustmentNote) {
1365
+ errors.push(i18next.t('text.adjustment_note_is_required_kindly_fill_in_the_adjustment_note_to_continue'))
1366
+ }
1341
1367
 
1342
1368
  if (!itm.sku) {
1343
- throw new Error(i18next.t('text.sku_is_required_kindly_fill_in_the_sku_to_continue'))
1369
+ errors.push(i18next.t('text.sku_is_required_kindly_fill_in_the_sku_to_continue'))
1344
1370
  }
1345
1371
 
1346
1372
  if (itm.qty < 0 || itm.unitCost < 0 || itm.uomValue < 0) {
1347
- throw new Error(i18next.t('text.invalid_value_in_list'))
1373
+ errors.push(i18next.t('text.invalid_value_in_list'))
1348
1374
  }
1349
1375
 
1350
1376
  if (
1351
1377
  itm.manufactureDate &&
1352
1378
  (itm.manufactureDate.getFullYear < 1000 || itm.manufactureDate.getTime > new Date().getTime)
1353
1379
  ) {
1354
- throw new Error(i18next.t('text.invalid_value_in_list'))
1380
+ errors.push(i18next.t('text.invalid_value_in_list'))
1381
+ }
1382
+ }
1383
+
1384
+ if (itm.serialNumbers) {
1385
+ let serialNumbers = itm.serialNumbers
1386
+ itm.serialNumbers = serialNumbers.replace(' ', '')
1387
+
1388
+ if (itm.serialNumbers.split(',').length != itm.qty) {
1389
+ errors.push(i18next.t('text.serial_number_not_tally_with_qty'))
1355
1390
  }
1356
1391
  }
1392
+
1393
+ if (errors.length) {
1394
+ itm.errMsg = errors.join('; ')
1395
+ }
1396
+ })
1397
+
1398
+ const hasErrors = patches.some(p => p.errMsg)
1399
+ if (hasErrors) {
1400
+ return patches
1401
+ }
1402
+
1403
+ // Save original patches for error display if the server mutation fails
1404
+ const originalPatches = patches.map(p => ({ ...p }))
1405
+
1406
+ // All validations passed — apply transformations and submit
1407
+ patches.forEach(itm => {
1357
1408
  itm.qty = toFloatOrUndefined(itm.qty)
1358
1409
  itm.packingSize = toFloatOrUndefined(itm.packingSize)
1359
1410
  itm.uomValue = toFloatOrUndefined(itm.uomValue)
@@ -1365,19 +1416,14 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1365
1416
  }
1366
1417
  if (itm.unitCost != null) {
1367
1418
  itm.unitCost = toFloatOrUndefined(itm.unitCost)
1368
- if (isNaN(itm.unitCost)) {
1369
- throw new Error(i18next.t('text.invalid_unit_cost'))
1370
- }
1371
1419
  }
1372
1420
 
1373
- if (itm.location.zone || itm.location.row || itm.location.column) {
1374
- //if user repic location after import
1421
+ if (itm.location && (itm.location.zone || itm.location.row || itm.location.column)) {
1375
1422
  delete itm.location.zone
1376
1423
  delete itm.location.row
1377
1424
  delete itm.location.column
1378
1425
  }
1379
1426
 
1380
- //if user repick product after import
1381
1427
  if (itm?.product?.productId) {
1382
1428
  itm.product.id = itm.product.productId
1383
1429
  delete itm.product.productId
@@ -1399,14 +1445,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1399
1445
  itm.manufactureDate = `${mdt.getFullYear()}-${mdt.getMonth() + 1}-${mdt.getDate()}`
1400
1446
  }
1401
1447
 
1402
- if (itm.serialNumbers) {
1403
- let serialNumbers = itm.serialNumbers
1404
- itm.serialNumbers = serialNumbers.replace(' ', '')
1405
-
1406
- if (itm.serialNumbers.split(',').length != itm.qty) {
1407
- throw new Error(i18next.t('text.serial_number_not_tally_with_qty'))
1408
- }
1409
- }
1448
+ delete itm.errMsg
1410
1449
  })
1411
1450
 
1412
1451
  const response = await client.mutate({
@@ -1419,9 +1458,15 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1419
1458
  })
1420
1459
 
1421
1460
  if (!response.errors) {
1422
- history.back()
1423
1461
  this.dataGrist.fetch()
1424
1462
  this.showToast({ message: i18next.t('text.data_inventory_adjustment_has_been_submitted_for_approval') })
1463
+ } else {
1464
+ // Server returned errors — show in the error column on original patches
1465
+ const errMsg = response.errors.map(e => e.message).join('; ')
1466
+ originalPatches.forEach(p => {
1467
+ p.errMsg = errMsg
1468
+ })
1469
+ return originalPatches
1425
1470
  }
1426
1471
  } catch (e) {
1427
1472
  this.showToast(e)
@@ -1450,6 +1495,14 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1450
1495
  return { ...column }
1451
1496
  })
1452
1497
 
1498
+ columns.push({
1499
+ type: 'string',
1500
+ name: 'errMsg',
1501
+ header: i18next.t('field.error_message'),
1502
+ width: 300,
1503
+ record: { editable: false }
1504
+ })
1505
+
1453
1506
  setTimeout(() => {
1454
1507
  openPopup(
1455
1508
  html`
@@ -1459,6 +1512,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
1459
1512
  rows: this.config.rows,
1460
1513
  columns: columns
1461
1514
  }}
1515
+ .enableRowErrors=${true}
1462
1516
  .importHandler="${this.importHandler.bind(this)}"
1463
1517
  @field-change="${this.fieldChange.bind(this)}"
1464
1518
  ></import-pop-up>
@@ -6,29 +6,18 @@ module.exports = {
6
6
  subdomainOffset: 2,
7
7
  port: 4000,
8
8
  inspect: '9330',
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
9
18
  // ormconfig: {
10
19
  // name: 'default',
11
20
  // type: 'postgres',
12
- // database: 'postgres',
13
- // username: 'izzah',
14
- // password: 'hatio1234',
15
- // host: 'my-operato-pg.cjcso4qmeuq0.ap-southeast-5.rds.amazonaws.com',
16
- // port: 55432,
17
- // synchronize: false,
18
- // logging: true
19
- // },
20
- // postgres2
21
- // ormconfig: {
22
- // name: 'default',
23
- // type: 'postgres',
24
- // database: 'postgres',
25
- // username: 'postgres',
26
- // password: 'hatio',
27
- // host: '192.168.0.151',
28
- // port: 15432,
29
- // synchronize: false,debug
30
- // name: 'default',
31
- // type: 'postgres',
32
21
  // database: 'arif',
33
22
  // username: 'postgres',
34
23
  // password: 'hatio',
@@ -37,51 +26,7 @@ module.exports = {
37
26
  // synchronize: false,
38
27
  // logging: true
39
28
  // },
40
- // ormconfig: {
41
- // name: 'default',
42
- // type: 'postgres',
43
- // database: 'operato-eric',
44
- // username: 'postgres',
45
- // password: 'hatio',
46
- // host: '192.168.0.248',
47
- // port: 15432,
48
- // synchronize: false,
49
- // logging: true
50
- // },
51
- //operato
52
- // ormconfig: {
53
- // name: 'default',
54
- // type: 'postgres',
55
- // database: 'operato',
56
- // username: 'postgres',
57
- // password: 'hatio',
58
- // host: '192.168.0.151',
59
- // port: 15432,
60
- // synchronize: false,
61
- // logging: true
62
- // },
63
- //153 - operatodebug
64
- // type: 'postgres',
65
- // database: 'operato',
66
- // username: 'postgres',
67
- // password: 'hatio',
68
- // host: '192.168.0.153',
69
- // port: 15432,
70
- // synchronize: false,
71
- // logging: true
72
- // },
73
- //eric2
74
- // ormconfig: {
75
- // name: 'default',
76
- // type: 'postgres',
77
- // database: 'eric2',
78
- // username: 'postgres',
79
- // password: 'hatio',
80
- // host: '192.168.0.153',
81
- // port: 15432,
82
- // synchronize: false,
83
- // logging: true
84
- // },
29
+
85
30
  // STAGING DATABASE
86
31
  ormconfig: {
87
32
  name: 'default',
@@ -94,30 +39,46 @@ module.exports = {
94
39
  synchronize: false,
95
40
  logging: true
96
41
  },
97
- //EMS
42
+
98
43
  // ormconfig: {
99
44
  // name: 'default',
100
45
  // type: 'postgres',
101
- // database: 'EMS',
46
+ // host: 'operatov3.cluster-cijhm4n1hbst.ap-southeast-1.rds.amazonaws.com',
47
+ // port: 55432,
48
+ // database: 'postgres',
102
49
  // username: 'postgres',
103
- // password: 'hatio',
104
- // host: '192.168.0.161',
105
- // port: 15432,
50
+ // password: 'abcd1234',
106
51
  // synchronize: false,
52
+ // logging: true,
53
+ // connectTimeoutMS: 30000,
54
+ // extra: { poolSize: 30 }
55
+ // },
56
+
57
+ //db izzah
58
+ // ormconfig: {
59
+ // name: 'default',
60
+ // type: 'postgres',
61
+ // database: '06072023',
62
+ // username: 'postgres',
63
+ // password: 'hatio',
64
+ // host: '192.168.0.153',
65
+ // port: 15432,f
66
+ // synchronize: true,
107
67
  // logging: true
108
68
  // },
109
- //db nora
110
69
  // ormconfig: {
111
70
  // name: 'default',
112
71
  // type: 'postgres',
113
72
  // database: 'postgres',
114
73
  // username: 'postgres',
115
74
  // password: 'hatio',
116
- // host: '192.168.0.36',
75
+ // host: '192.168.0.151',
117
76
  // port: 15432,
118
- // synchronize: true,
77
+ // synchronize: false,
119
78
  // logging: true
120
79
  // },
80
+
81
+ // //ERIC
121
82
  // ormconfig: {
122
83
  // name: 'default',
123
84
  // type: 'postgres',
@@ -126,14 +87,15 @@ module.exports = {
126
87
  // password: 'hatio',
127
88
  // host: '192.168.0.153',
128
89
  // port: 15432,
129
- // synchronize: true,
90
+ // synchronize: false,
130
91
  // logging: true
131
92
  // },
132
- //db izzah
93
+
94
+ //eric 2
133
95
  // ormconfig: {
134
96
  // name: 'default',
135
97
  // type: 'postgres',
136
- // database: '06072023',
98
+ // database: 'eric2',
137
99
  // username: 'postgres',
138
100
  // password: 'hatio',
139
101
  // host: '192.168.0.153',
@@ -141,20 +103,21 @@ module.exports = {
141
103
  // synchronize: false,
142
104
  // logging: true
143
105
  // },
106
+
144
107
  // ormconfig: {
145
108
  // name: 'default',
146
109
  // type: 'postgres',
147
- // host: 'a6cf0bb5671f54555985dede599d5a87-649005352.ap-southeast-1.elb.amazonaws.com',
148
- // port: 15432,
110
+ // host: 'operatov3.cluster-cijhm4n1hbst.ap-southeast-1.rds.amazonaws.com',
111
+ // port: 55432,
149
112
  // database: 'postgres',
150
- // username: 'operato-hub-app',
151
- // password: 'a5Z(7|6n$Zti',
113
+ // username: 'postgres',
114
+ // password: 'abcd1234',
152
115
  // synchronize: false,
153
116
  // logging: true,
154
117
  // connectTimeoutMS: 30000,
155
118
  // extra: { poolSize: 30 }
156
119
  // },
157
- // //ormconfig: {
120
+ //ormconfig: {
158
121
  // name: 'default',
159
122
  // type: 'postgres',
160
123
  // database: 'dev2',
@@ -182,7 +145,16 @@ module.exports = {
182
145
  },
183
146
  uploads: 'uploads',
184
147
  attachmentsPath: 'attachments',
185
- logger: {},
148
+ logger: {
149
+ file: {
150
+ filename: 'logs/application-%DATE%.log',
151
+ datePattern: 'YYYY-MM-DD-HH',
152
+ zippedArchive: true,
153
+ maxSize: '200m',
154
+ maxFiles: '1m',
155
+ level: 'info'
156
+ }
157
+ },
186
158
  email: {
187
159
  host: 'smtp.office365.com',
188
160
  port: 587,
@@ -220,72 +192,30 @@ module.exports = {
220
192
  // privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
221
193
  // }
222
194
  },
223
- fulfillmentIntegrationOperato: {
224
- host: '192.168.0.161:3000',
225
- protocol: 'http',
226
- platform: 'operato',
227
- application: 'Operato MMS',
228
- appKey: 'a9bf751e622bf146662b240d58971051',
229
- appSecret: '1c385935dc131c4b902b9bbf6a4798af',
230
- callback: 'http://192.168.0.161:5000/callback-operato'
231
- },
232
- lmdIntegrationNinjavan: {
233
- clientId: 'P8WCEwMo0FHNlPECwTLetwN3diAmt5KF',
234
- secretKey: '1D0yNZGseOjhxnwri29xmuZiiuRp131L',
235
- refreshThreshold: 43200
236
- },
237
-
238
- lmdIntegrationEms: { refreshThreshold: 43200 },
239
- marketplaceIntegrationShopee: {
240
- platform: 'shopee',
241
- isUAT: false,
242
- application: 'Operato MMS',
243
- partnerId: 846025,
244
- partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64',
245
- v2: true
246
- },
247
- marketplaceIntegrationLazada: {
248
- platform: 'lazada',
249
- application: 'operato-mms',
250
- appKey: '120961',
251
- appSecret: 'HB3RTNEXHlVSlBr9SmWF8AjbSUT7a825',
252
- callback: 'https://maybank.operato-m.com/lazada-callback'
253
- },
254
-
255
- //testinglazada
256
- // marketplaceIntegrationLazada: {
257
- // platform: 'lazada',
258
- // application: 'powrup_bi',
259
- // appKey: '117890',
260
- // appSecret: 'tQVllnUa7irAHoNxAwXEVxoP1we1bUjE',
261
- // callback: 'https://73c5-175-141-30-142.ngrok-free.app/lazada-callback'
262
- // },
263
- reportApiUrl: 'http://localhost:8090/rest/report/show_html',
264
- // 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',
265
199
  // reportApiUrl: 'http://10.100.109.66:8090/rest/report/show_html',
266
200
  awbFileStorage: {
267
201
  type: 's3',
268
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
269
- secretAccessKey: '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',
202
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
203
+ secretAccessKey: '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',
270
204
  bucketName: 'operato-awb',
271
205
  region: 'ap-southeast-1'
272
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
+ },
273
214
  lambda: {
274
215
  region: 'ap-southeast-1',
275
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
276
- secretAccessKey: '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'
216
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
217
+ secretAccessKey: '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'
277
218
  },
278
- lmdIntegrationConfig: {
279
- version: {
280
- v1: 'lmdMiddleware',
281
- v2: 'lmdMiddlewareV2'
282
- }
283
- },
284
- awsSesEmail: {
285
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
286
- secretAccessKey: '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',
287
- email: 'support@hatio.asia'
288
- }
289
- // reportApiUrl:
290
- // 'http://k8s-default-operator-2fd6178d98-66c66a0f76c09575.elb.ap-southeast-1.amazonaws.com/rest/report/show_html'
219
+ reportApiUrl:
220
+ 'http://k8s-default-operator-8eeba2e246-3e3a5ee7979bcd57.elb.ap-southeast-1.amazonaws.com/rest/report/show_html'
291
221
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-wms",
3
- "version": "4.3.789",
3
+ "version": "4.3.791",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -66,7 +66,7 @@
66
66
  "@things-factory/attachment-ui": "^4.3.767",
67
67
  "@things-factory/auth-ui": "^4.3.767",
68
68
  "@things-factory/barcode-ui": "^4.3.767",
69
- "@things-factory/biz-ui": "^4.3.770",
69
+ "@things-factory/biz-ui": "^4.3.790",
70
70
  "@things-factory/board-service": "^4.3.767",
71
71
  "@things-factory/board-ui": "^4.3.770",
72
72
  "@things-factory/code-ui": "^4.3.770",
@@ -81,17 +81,17 @@
81
81
  "@things-factory/help": "^4.3.767",
82
82
  "@things-factory/i18n-base": "^4.3.767",
83
83
  "@things-factory/id-rule-base": "^4.3.770",
84
- "@things-factory/import-ui": "^4.3.770",
85
- "@things-factory/import-ui-excel": "^4.3.776",
84
+ "@things-factory/import-ui": "^4.3.790",
85
+ "@things-factory/import-ui-excel": "^4.3.790",
86
86
  "@things-factory/menu-ui": "^4.3.770",
87
87
  "@things-factory/more-ui": "^4.3.767",
88
88
  "@things-factory/notification": "^4.3.767",
89
89
  "@things-factory/pdf": "^4.3.767",
90
90
  "@things-factory/print-proxy-service": "^4.3.767",
91
91
  "@things-factory/print-ui": "^4.3.767",
92
- "@things-factory/product-base": "^4.3.788",
93
- "@things-factory/resource-ui": "^4.3.770",
94
- "@things-factory/sales-ui": "^4.3.789",
92
+ "@things-factory/product-base": "^4.3.791",
93
+ "@things-factory/resource-ui": "^4.3.790",
94
+ "@things-factory/sales-ui": "^4.3.791",
95
95
  "@things-factory/scene-data-transform": "^4.3.767",
96
96
  "@things-factory/scene-excel": "^4.3.767",
97
97
  "@things-factory/scene-firebase": "^4.3.767",
@@ -107,8 +107,8 @@
107
107
  "@things-factory/system-ui": "^4.3.767",
108
108
  "@things-factory/transport-base": "^4.3.767",
109
109
  "@things-factory/tutorial-ui": "^4.3.767",
110
- "@things-factory/warehouse-base": "^4.3.789",
111
- "@things-factory/worksheet-base": "^4.3.789"
110
+ "@things-factory/warehouse-base": "^4.3.791",
111
+ "@things-factory/worksheet-base": "^4.3.791"
112
112
  },
113
113
  "devDependencies": {
114
114
  "@things-factory/builder": "^4.3.767",
@@ -117,5 +117,5 @@
117
117
  "cypress-localstorage-commands": "^1.6.1",
118
118
  "eslint-plugin-cypress": "^2.12.1"
119
119
  },
120
- "gitHead": "f2c0983c5b5bae151d242f2d0267e800d6be318e"
120
+ "gitHead": "e0d5f39ee625c6cc6732656cd13af9e653d1c001"
121
121
  }