@things-factory/operato-wms 3.8.8 → 3.8.12

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.
@@ -134,8 +134,6 @@ class BulkOperation extends localize(i18next)(PageView) {
134
134
 
135
135
  static get properties() {
136
136
  return {
137
- _files: Array,
138
- _releaseOrders: Array,
139
137
  _bizplaceId: String,
140
138
  _bizplaceName: String
141
139
  }
@@ -159,33 +157,13 @@ class BulkOperation extends localize(i18next)(PageView) {
159
157
  return this.shadowRoot.querySelector('#upload-document')
160
158
  }
161
159
 
162
- get _dummyData() {
163
- return this._releaseOrders.map(x => {
164
- x.orderInventories = x.orderInventories.map(y => {
165
- return {
166
- ...y,
167
- availableQty: Math.floor(Math.random() * 50) + 30
168
- }
169
- })
170
- return {
171
- ...x,
172
- releaseDate: new Date().toISOString().split('T')
173
- }
174
- })
175
- }
176
-
177
160
  render() {
178
- let subtitle = 'Release Order'
179
- let attachment = {
180
- path: ''
181
- }
182
-
183
161
  return html`
184
162
  <ul export-form>
185
163
  <li>
186
164
  <div subtitle>
187
- ${subtitle} &nbsp;
188
- <a href="${location.origin}/attachment/${attachment.path}" download>
165
+ Release Order &nbsp;
166
+ <a @click=${async () => await this._getReleaseOrderTemplate()}" download>
189
167
  <mwc-icon>file_download</mwc-icon>
190
168
  </a>
191
169
  </div>
@@ -223,17 +201,39 @@ class BulkOperation extends localize(i18next)(PageView) {
223
201
  `
224
202
  }
225
203
 
226
- updated(changeProps) {
227
- if (changeProps.has('_rawROData')) {
228
- if (this._releaseOrders.length) {
229
- // this._validateReleaseOrder(this._releaseOrders)
230
- this._validateReleaseOrder(this._rawROData)
204
+ async _getReleaseOrderTemplate() {
205
+ const data = [
206
+ {
207
+ refNo: '',
208
+ refNo2: '',
209
+ refNo3: '',
210
+ releaseDate: '',
211
+ attentionTo: '',
212
+ deliveryAddress1: '',
213
+ deliveryAddress2: '',
214
+ deliveryAddress3: '',
215
+ deliveryAddress4: '',
216
+ postalCode: '',
217
+ city: '',
218
+ state: '',
219
+ country: '',
220
+ phone1: '',
221
+ sku: '',
222
+ packingType: '',
223
+ packingSize: 0,
224
+ uom: '',
225
+ releaseQty: 0
231
226
  }
232
- }
233
- }
227
+ ]
228
+ /* make the worksheet */
229
+ const ws = XLSX.utils.json_to_sheet(data)
230
+
231
+ /* add to workbook */
232
+ const wb = XLSX.utils.book_new()
233
+ XLSX.utils.book_append_sheet(wb, ws)
234
234
 
235
- _getReleaseOrderTemplate() {
236
- /* download excel template for Create RO */
235
+ /* generate an XLSX file */
236
+ XLSX.writeFile(wb, 'release_orders.xlsx')
237
237
  }
238
238
 
239
239
  async _extractRawDataFromExcel() {
@@ -261,26 +261,41 @@ class BulkOperation extends localize(i18next)(PageView) {
261
261
  let rawData = XLSX.utils.sheet_to_json(worksheet)
262
262
  rawData = rawData.map(raw => {
263
263
  if (!raw.releaseDate || raw.releaseDate.constructor !== String) raw.releaseDate = ''
264
- else new Date(raw.releaseDate)
265
- return raw
264
+ //return entries without empty strings
265
+ return Object.fromEntries(Object.entries(raw).filter(([_, val]) => !/^\s*$/.test(val)))
266
266
  })
267
- /* return rawData to validate with inventory stocks */
268
267
  this._validateReleaseOrder(rawData)
269
268
  }
270
269
  } else if (_docs.files.length > 1)
271
- this._showToast({ level: 'error', message: i18next.t('text.you_can_only_upload_maximum_one_file') })
270
+ this._showToast({ level: 'error', message: i18next.t('text.you_can_only_upload_one_file_max') })
272
271
  else this._showToast({ level: 'error', message: i18next.t('text.please_attach_the_file') })
273
272
  } else this._showToast({ level: 'error', message: i18next.t('text.please_attach_the_file') })
274
273
  }
275
274
 
276
275
  async _validateReleaseOrder(records) {
277
276
  /* validate excel that user uploaded */
278
- openPopup(html` <validate-ro-popup .records=${records} .bizplaceId=${this._bizplaceId}></validate-ro-popup> `, {
279
- backdrop: true,
280
- escapable: false,
281
- size: 'large',
282
- title: i18next.t('title.import')
283
- })
277
+ openPopup(
278
+ html`
279
+ <validate-ro-popup
280
+ .records=${records.map(record => {
281
+ return {
282
+ ...record,
283
+ postalCode: String(record.postalCode || ''),
284
+ phone1: String(record.phone1 || ''),
285
+ releaseDate: String(record.releaseDate || ''),
286
+ releaseQty: Number(record.releaseQty || 0)
287
+ }
288
+ })}
289
+ .bizplaceId=${this._bizplaceId}
290
+ ></validate-ro-popup>
291
+ `,
292
+ {
293
+ backdrop: true,
294
+ escapable: false,
295
+ size: 'large',
296
+ title: i18next.t('title.import')
297
+ }
298
+ )
284
299
  }
285
300
 
286
301
  _openBizplacesSelector() {
@@ -7,7 +7,7 @@ import { css, html, LitElement } from 'lit-element'
7
7
  import { i18next, localize } from '@things-factory/i18n-base'
8
8
  import { client, CustomAlert } from '@things-factory/shell'
9
9
  import { ScrollbarStyles } from '@things-factory/styles'
10
- import { isMobileDevice, sleep } from '@things-factory/utils'
10
+ import { isMobileDevice } from '@things-factory/utils'
11
11
 
12
12
  class ValidateRoPopup extends localize(i18next)(LitElement) {
13
13
  static get properties() {
@@ -79,11 +79,11 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
79
79
  return {
80
80
  // if the condition not met, the grist row will be red
81
81
  emphasized:
82
- record.assignedQty <= 0 ||
82
+ record.assignedQty < record.releaseQty ||
83
83
  !record.refNo ||
84
84
  record?.refNo == '' ||
85
- !record.releaseDate ||
86
- record?.releaseDate == ''
85
+ record?.releaseDate == '' ||
86
+ record?.releaseDate < this._getStdDateStr(new Date())
87
87
  }
88
88
  }
89
89
  },
@@ -192,8 +192,8 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
192
192
  },
193
193
  {
194
194
  type: 'string',
195
- name: 'name',
196
- header: i18next.t('field.name'),
195
+ name: 'productInfo',
196
+ header: i18next.t('field.product_info'),
197
197
  width: 400
198
198
  },
199
199
  {
@@ -226,6 +226,18 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
226
226
  header: i18next.t('field.uom'),
227
227
  width: 100
228
228
  },
229
+ {
230
+ type: 'string',
231
+ name: 'packingType',
232
+ header: i18next.t('field.packing_type'),
233
+ width: 100
234
+ },
235
+ {
236
+ type: 'string',
237
+ name: 'packingSize',
238
+ header: i18next.t('field.packing_size'),
239
+ width: 100
240
+ },
229
241
  {
230
242
  type: 'string',
231
243
  name: 'remark',
@@ -295,6 +307,7 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
295
307
  country
296
308
  sku
297
309
  productId
310
+ productInfo
298
311
  batchId
299
312
  packingType
300
313
  packingSize
@@ -338,16 +351,21 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
338
351
 
339
352
  if (!response.errors) {
340
353
  this.records = response.data.bulkReleaseGoodsAvailableItems.map(item => {
354
+ let releaseDate = this._getStdDateStr(new Date(item.releaseDate || ''))
355
+
341
356
  return {
342
357
  ...item,
358
+ releaseDate,
343
359
  remark: !item.productId
344
360
  ? i18next.t('text.product_not_found')
345
361
  : item.releaseQty <= 0
346
362
  ? i18next.t('text.invalid_release_qty')
347
- : item.assignedQty == 0
363
+ : item.assignedQty < item.releaseQty
348
364
  ? i18next.t('text.insufficient_stock')
349
- : !item.releaseDate
365
+ : releaseDate == ''
350
366
  ? i18next.t('text.release_date_is_empty')
367
+ : releaseDate < this._getStdDateStr(new Date())
368
+ ? i18next.t('text.backdate_is_not_allowed')
351
369
  : !item.refNo
352
370
  ? i18next.t('text.ref_no_is_empty')
353
371
  : ''
@@ -374,11 +392,12 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
374
392
  `,
375
393
  variables: {
376
394
  rawReleaseGoods: this.records.map(x => {
395
+ // list out all properties again to avoid additional props added by user in excel
377
396
  return {
378
397
  refNo: x.refNo,
379
398
  refNo2: x.refNo2,
380
399
  refNo3: x.refNo3,
381
- releaseDate: String(x.releaseDate),
400
+ releaseDate: x.releaseDate,
382
401
  deliveryAddress1: x.deliveryAddress1,
383
402
  deliveryAddress2: x.deliveryAddress2,
384
403
  deliveryAddress3: x.deliveryAddress3,
@@ -401,21 +420,22 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
401
420
  }
402
421
  })
403
422
 
404
- this.dataGrist.hideSpinner()
405
- await sleep(1)
406
-
407
423
  if (!response.errors) {
408
424
  this._showToast({ message: i18next.t('text.release_order_created') })
409
425
  history.back()
426
+ } else {
427
+ let insufficientStockError = response.errors.find(err => err.extensions.exception.errorCode == 'ins1')
428
+ if (insufficientStockError) {
429
+ // if system suddenly found that any item is insufficient,
430
+ // display the available items again.
431
+ await this._getAvailableItems(this.records)
432
+ this._showToast({ message: i18next.t('text.please_recheck_your_request_data') })
433
+ }
410
434
  }
411
435
  } catch (e) {
412
- let insufficientStockError = response.errors.find(err => err.extensions.exception.errorCode == 'ins1')
413
- if (insufficientStockError) {
414
- // if system suddenly found that any item is insufficient,
415
- // display the available items again.
416
- await this._getAvailableItems(this.records)
417
- this._showToast({ message: i18next.t('text.please_recheck_your_request_data') })
418
- } else this._showToast(e)
436
+ this._showToast(e)
437
+ } finally {
438
+ this.dataGrist.hideSpinner()
419
439
  }
420
440
  }
421
441
 
@@ -423,11 +443,21 @@ class ValidateRoPopup extends localize(i18next)(LitElement) {
423
443
  if (this.records.some(record => !record.refNo || record?.refNo == ''))
424
444
  throw new Error(i18next.t('text.ref_no_is_required'))
425
445
 
426
- if (this.records.some(record => !record.releaseDate || record?.releaseDate == ''))
427
- throw new Error(i18next.t('text.release_date_is_required'))
428
-
429
446
  if (this.records.some(record => !record.releaseQty || record.releaseQty > record.assignedQty))
430
447
  throw new Error(i18next.t('text.invalid_release_qty'))
448
+
449
+ if (this.records.some(record => record?.releaseDate == ''))
450
+ throw new Error(i18next.t('text.release_date_is_required'))
451
+ else if (this.records.some(record => record.releaseDate < this._getStdDateStr(new Date())))
452
+ throw new Error(i18next.t('text.backdate_is_not_allowed'))
453
+ }
454
+
455
+ _getStdDateStr(date) {
456
+ if (isNaN(date.getFullYear())) return ''
457
+ else {
458
+ date.setHours(date.getHours() + 8)
459
+ return date.toISOString().split('T')[0]
460
+ }
431
461
  }
432
462
 
433
463
  _showToast({ type, message }) {
@@ -401,7 +401,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
401
401
  return {
402
402
  ...record,
403
403
  gtin: productDetail.gtin,
404
- productName: productDetail.name
404
+ productName: product.name
405
405
  }
406
406
  })
407
407
  } else {
@@ -433,7 +433,8 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
433
433
  auxValue1: product.auxValue1 || '',
434
434
  auxUnit2: product.auxUnit2 || '',
435
435
  auxValue2: product.auxValue2 || '',
436
- bizplaceId: arrivalNotice.bizplace.id
436
+ bizplaceId: arrivalNotice.bizplace.id,
437
+ bizplaceName: arrivalNotice.bizplace.name
437
438
  }
438
439
 
439
440
  if (product.productDetails && product.productDetails.length) {
@@ -441,7 +442,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
441
442
  return {
442
443
  ...record,
443
444
  gtin: productDetail.gtin,
444
- productName: productDetail.name
445
+ productName: product.name
445
446
  }
446
447
  })
447
448
  } else {
@@ -551,6 +552,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
551
552
  auxUnit2: product.auxUnit2 || '',
552
553
  auxValue2: product.auxValue2 || '',
553
554
  bizplaceId: releaseGood.bizplace.id,
555
+ bizplaceName: releaseGood.bizplace.name,
554
556
  printQty: oi.releaseQty || 0
555
557
  }
556
558
 
@@ -559,7 +561,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
559
561
  return {
560
562
  ...record,
561
563
  gtin: productDetail.gtin,
562
- productName: productDetail.name
564
+ productName: product.name
563
565
  }
564
566
  })
565
567
  } else {
@@ -590,7 +592,8 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
590
592
  auxValue1: product.auxValue1 || '',
591
593
  auxUnit2: product.auxUnit2 || '',
592
594
  auxValue2: product.auxValue2 || '',
593
- bizplaceId: releaseGood.bizplace.id
595
+ bizplaceId: releaseGood.bizplace.id,
596
+ bizplaceName: releaseGood.bizplace.name
594
597
  }
595
598
 
596
599
  if (product.productDetails && product.productDetails.length) {
@@ -598,7 +601,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
598
601
  return {
599
602
  ...record,
600
603
  gtin: productDetail.gtin,
601
- productName: productDetail.name
604
+ productName: product.name
602
605
  }
603
606
  })
604
607
  } else {
@@ -626,7 +629,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
626
629
  async _fetchInventories(fetcherDetail, filters) {
627
630
  const response = await client.query({
628
631
  query: gql`
629
- query inventories($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
632
+ query inventories($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
630
633
  inventories(filters: $filters, pagination: $pagination, sortings: $sortings) {
631
634
  items {
632
635
  palletId
@@ -650,6 +653,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
650
653
  }
651
654
  bizplace {
652
655
  id
656
+ name
653
657
  }
654
658
  expirationDate
655
659
  }
@@ -685,7 +689,8 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
685
689
  auxUnit2: product.auxUnit2 || '',
686
690
  auxValue2: product.auxValue2 || '',
687
691
  productInfo: product.description ? `${product.name} (${product.description})` : `${product.name}`,
688
- bizplaceId: inventory.bizplace.id
692
+ bizplaceId: inventory.bizplace.id,
693
+ bizplaceName: inventory.bizplace.name
689
694
  }
690
695
 
691
696
  if (product.productDetails && product.productDetails.length) {
@@ -693,7 +698,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
693
698
  return {
694
699
  ...record,
695
700
  gtin: productDetail.gtin,
696
- productName: productDetail.name
701
+ productName: product.name
697
702
  }
698
703
  })
699
704
  } else {
@@ -757,6 +762,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
757
762
  searchParams.append('aux_value_2', record.auxValue2)
758
763
  searchParams.append('expiration_date', record.expirationDate)
759
764
  searchParams.append('location', record.location)
765
+ searchParams.append('company_name', record.bizplaceName)
760
766
 
761
767
  let printCounter = 0
762
768
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-wms",
3
- "version": "3.8.8",
3
+ "version": "3.8.12",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -69,9 +69,9 @@
69
69
  "@things-factory/print-proxy-service": "^3.8.0",
70
70
  "@things-factory/print-service": "^3.8.0",
71
71
  "@things-factory/print-ui": "^3.8.0",
72
- "@things-factory/product-base": "^3.8.3",
72
+ "@things-factory/product-base": "^3.8.9",
73
73
  "@things-factory/resource-ui": "^3.8.0",
74
- "@things-factory/sales-ui": "^3.8.8",
74
+ "@things-factory/sales-ui": "^3.8.12",
75
75
  "@things-factory/scene-chartjs": "^3.7.5",
76
76
  "@things-factory/scene-clock": "^3.7.5",
77
77
  "@things-factory/scene-clone": "^3.7.5",
@@ -102,11 +102,11 @@
102
102
  "@things-factory/system-ui": "^3.8.0",
103
103
  "@things-factory/transport-base": "^3.8.0",
104
104
  "@things-factory/tutorial-ui": "^3.8.0",
105
- "@things-factory/warehouse-base": "^3.8.8",
106
- "@things-factory/worksheet-base": "^3.8.8"
105
+ "@things-factory/warehouse-base": "^3.8.12",
106
+ "@things-factory/worksheet-base": "^3.8.12"
107
107
  },
108
108
  "devDependencies": {
109
109
  "@things-factory/builder": "^3.7.5"
110
110
  },
111
- "gitHead": "3f0cf4cd9eba27f4b4a7688c462cc3183dd9df00"
111
+ "gitHead": "8c183f820cce8f335d326ddbc8c7922fb6cf4bde"
112
112
  }
@@ -1150,6 +1150,7 @@
1150
1150
  "text.picking_worksheet_will_be_activated": "picking worksheet will be activated",
1151
1151
  "text.picking_worksheet_will_be_generated": "picking worksheet will be generated",
1152
1152
  "text.pickup_info_is_not_completed": "pickup info is not completed",
1153
+ "text.please_attach_the_file": "please attach the file",
1153
1154
  "text.please_check_your_setting": "please check your setting",
1154
1155
  "text.please_check_your_vas_target": "please check your vas target",
1155
1156
  "text.please_key_in_new_serial_number": "please key in new serial number",
@@ -1159,6 +1160,7 @@
1159
1160
  "text.please_select_a_truck": "select a truck",
1160
1161
  "text.please_select_label_indicator": "please select label indicator",
1161
1162
  "text.please_select_release_order": "please select release order",
1163
+ "text.please_select_the_company": "please select the company",
1162
1164
  "text.please_select_the_contact_type": "please select the contact type",
1163
1165
  "text.please_select_the_location_again": "please select the location again",
1164
1166
  "text.please_select_the_location": "please select the location",
@@ -1192,6 +1194,7 @@
1192
1194
  "text.related_arrival_notice_will_be_deleted": "related arrival notice will be deleted",
1193
1195
  "text.related_release_order_will_be_rejected": "related release order will be rejected",
1194
1196
  "text.release_date_is_empty": "release date is empty",
1197
+ "text.backdate_is_not_allowed": "backdate is not allowed",
1195
1198
  "text.release_date_is_required": "release date is required",
1196
1199
  "text.release_order_confirmed": "release order confirmed",
1197
1200
  "text.release_order_created": "release order created",
@@ -1204,8 +1207,8 @@
1204
1207
  "text.release_order_rejected": "release order rejected",
1205
1208
  "text.release_order_will_be_deleted": "release order will be deleted",
1206
1209
  "text.release_qty_cannot_exceed_stored_qty": "release qty cannot exceed stored qty",
1207
- "text.release_qty_is_empty": "release quantity is empty",
1208
1210
  "text.release_qty_invalid": "release quantity is invalid",
1211
+ "text.release_qty_is_empty": "release quantity is empty",
1209
1212
  "text.release_qty_is_more_than_expected": "release qty is more than expected",
1210
1213
  "text.remark_is_empty": "remark is empty",
1211
1214
  "text.remark_updated": "remark updated",
@@ -1317,6 +1320,7 @@
1317
1320
  "text.x_should_be_positive": "{state.x} should be positive value",
1318
1321
  "text.yes": "yes",
1319
1322
  "text.you_can_only_select_one_transport_type": "you can only select one transport type",
1323
+ "text.you_can_only_upload_one_file_max": "you can only upload one file max",
1320
1324
  "text.you_wont_be_able_to_revert_this": "you won't be able to revert this",
1321
1325
  "text.you.are.now.in": "you are now in {state.text}",
1322
1326
  "text.your_work_has_completed": "your work has completed",
@@ -1233,6 +1233,7 @@
1233
1233
  "text.picking_worksheet_will_be_activated": "피킹 작업지시서가 활성화 됩니다",
1234
1234
  "text.picking_worksheet_will_be_generated": "피킹 작업지시서가 생성 됩니다",
1235
1235
  "text.pickup_info_is_not_completed": "픽업 정보가 완료되지 않았습니다",
1236
+ "text.please_attach_the_file": "[ko]please attach the file",
1236
1237
  "text.please_check_your_setting": "설정을 확인해 주세요",
1237
1238
  "text.please_check_your_vas_target": "[ko] please check your vas target",
1238
1239
  "text.please_key_in_new_serial_number": "[ko]please key in new serial number",
@@ -1247,6 +1248,7 @@
1247
1248
  "text.please_select_an_arrival_notice": "select arrival notice",
1248
1249
  "text.please_select_label_indicator": "라벨 포시기 선택",
1249
1250
  "text.please_select_release_order": "[ko] please select release order",
1251
+ "text.please_select_the_company": "[ko]please select the company",
1250
1252
  "text.please_select_the_contact_type": "연락처 유형 선택",
1251
1253
  "text.please_select_the_label_format": "please select the label format",
1252
1254
  "text.please_select_the_location_again": "로케이션을 다시 선택해 주세요",
@@ -1288,6 +1290,7 @@
1288
1290
  "text.related_arrival_notice_will_be_deleted": "관련된 입고주문이 삭제 됩니다",
1289
1291
  "text.related_release_order_will_be_rejected": "관련된 출고주문이 삭제 됩니다",
1290
1292
  "text.release_date_is_empty": "[ko]release date is empty",
1293
+ "text.backdate_is_not_allowed": "[ko]backdate is not allowed",
1291
1294
  "text.release_date_is_required": "[ko]release date is required",
1292
1295
  "text.release_order_confirmed": "출고주문 확인",
1293
1296
  "text.release_order_created": "출고주문 생성",
@@ -1301,6 +1304,7 @@
1301
1304
  "text.release_order_submit_for_cancellation": "release order submit for cancellation",
1302
1305
  "text.release_order_will_be_deleted": "출고주문이 삭제 됩니다",
1303
1306
  "text.release_qty_cannot_exceed_stored_qty": "출고수량은 재고수량을 초과 할 수 없습니다",
1307
+ "text.release_qty_invalid": "[ko] release quantity is invalid",
1304
1308
  "text.release_qty_is_empty": "출고수량이 없습니다",
1305
1309
  "text.release_qty_is_more_than_expected": "출고수량이 예상보다 많습니다",
1306
1310
  "text.remark_is_empty": "비고가 없습니다",
@@ -1432,6 +1436,7 @@
1432
1436
  "text.x_should_be_positive": "{state.x}은(는) 반드시 양의 값이여야 합니다",
1433
1437
  "text.yes": "예",
1434
1438
  "text.you_can_only_select_one_transport_type": "운송유형은 하나만 선택 할 수 있습니다",
1439
+ "text.you_can_only_upload_one_file_max": "[ko]you can only upload one file max",
1435
1440
  "text.you_wont_be_able_to_revert_this": "되돌릴 수 없습니다",
1436
1441
  "text.you.are.now.in": "당신은 {state} 입니다",
1437
1442
  "text.your_work_has_completed": "작업이 완료 되었습니다",
@@ -1603,6 +1608,7 @@
1603
1608
  "title.loaded": "상차 완료",
1604
1609
  "title.loading": "상차 중",
1605
1610
  "title.location_label_format": "로케이션 라벨 형식",
1611
+ "title.location_scanned_is_not_quarantine_zone": "[ko] Location scanned is not a quarantine zone!",
1606
1612
  "title.location_sorting_rule": "로케이션 정렬 규칙",
1607
1613
  "title.location": "로케이션",
1608
1614
  "title.lot_information": "lot 정보",
@@ -1819,7 +1825,5 @@
1819
1825
  "title.worksheet_vas": "부가서비스 작업지시서",
1820
1826
  "title.worksheet": "작업지시서",
1821
1827
  "vas_order_created": "부가서비스주문 생성됨",
1822
- "title.location_scanned_is_not_quarantine_zone": "[ko] Location scanned is not a quarantine zone!",
1823
- "text.release_qty_invalid": "[ko] release quantity is invalid",
1824
1828
  "text.generate_worksheet": "[ko] generate worksheet"
1825
1829
  }
@@ -1180,6 +1180,7 @@
1180
1180
  "text.picking_worksheet_will_be_activated": "lembaran kerja pengambilan akan diaktifkan",
1181
1181
  "text.picking_worksheet_will_be_generated": "lembaran kerja pengambilan akan dijana",
1182
1182
  "text.pickup_info_is_not_completed": "maklumat pengambilan tidak lengkap",
1183
+ "text.please_attach_the_file": "[ms]please attach the file",
1183
1184
  "text.please_check_your_setting": "tolong semak tetapan anda",
1184
1185
  "text.please_check_your_vas_target": "sila semak sasaran vas anda",
1185
1186
  "text.please_key_in_new_serial_number": "[ms]please key in new serial number",
@@ -1189,6 +1190,7 @@
1189
1190
  "text.please_select_a_truck": "sila pilih trak",
1190
1191
  "text.please_select_label_indicator": "sila pilih petunjuk label",
1191
1192
  "text.please_select_release_order": "[ms] please select release order",
1193
+ "text.please_select_the_company": "[ms]please select the company",
1192
1194
  "text.please_select_the_contact_type": "sila pilih jenis kenalan",
1193
1195
  "text.please_select_the_location_again": "sila pilih lokasi sekali lagi",
1194
1196
  "text.please_select_the_location": "sila pilih lokasi",
@@ -1224,6 +1226,7 @@
1224
1226
  "text.related_arrival_notice_will_be_deleted": "notis ketibaan yang berkaitan akan dipadam",
1225
1227
  "text.related_release_order_will_be_rejected": "pelepasan pesanan yang berkaitan akan ditolak",
1226
1228
  "text.release_date_is_empty": "[ms]release date is empty",
1229
+ "text.backdate_is_not_allowed": "[ms]backdate is not allowed",
1227
1230
  "text.release_date_is_required": "[ms]release date is required",
1228
1231
  "text.release_order_confirmed": "stok pelepasan pesanan disahkan",
1229
1232
  "text.release_order_created": "pelepasan pesanan dicipta",
@@ -1236,6 +1239,7 @@
1236
1239
  "text.release_order_rejected": "stok pelepasan pesanan keluar ditolak",
1237
1240
  "text.release_order_will_be_deleted": "stok pelepasan pesanan akan dipadam",
1238
1241
  "text.release_qty_cannot_exceed_stored_qty": "kuantiti pelepasan melebihi kuantiti disimpan dalam gudang",
1242
+ "text.release_qty_invalid": "[ms] release quantity is invalid",
1239
1243
  "text.release_qty_is_empty": "stok pelepasan kuantiti tiada nilai",
1240
1244
  "text.release_qty_is_more_than_expected": "kuantiti pelepasan melebihi",
1241
1245
  "text.remark_is_empty": "disemak tidak diisi",
@@ -1345,6 +1349,7 @@
1345
1349
  "text.x_should_be_positive": "{state.x} should be positive value",
1346
1350
  "text.yes": "ya",
1347
1351
  "text.you_can_only_select_one_transport_type": "you can only select one transport type",
1352
+ "text.you_can_only_upload_one_file_max": "[ms]you can only upload one file max",
1348
1353
  "text.you_wont_be_able_to_revert_this": "anda tidak boleh kembali selepas langkah ini",
1349
1354
  "text.you.are.now.in": "anda berada di {state}",
1350
1355
  "text.your_work_has_completed": "kerja anda telah selesai",
@@ -1497,6 +1502,7 @@
1497
1502
  "title.loaded": "telah muat naik",
1498
1503
  "title.loading": "muat naik",
1499
1504
  "title.location_label_format": "format label lokasi",
1505
+ "title.location_scanned_is_not_quarantine_zone": "[ms] Location scanned is not a quarantine zone!",
1500
1506
  "title.location_sorting_rule": "peraturan susunan lokasi",
1501
1507
  "title.location": "lokasi",
1502
1508
  "title.lot_information": "informasi lot",
@@ -1689,7 +1695,5 @@
1689
1695
  "title.worksheet_vas": "VAS worksheet",
1690
1696
  "title.worksheet": "lembaran kerja",
1691
1697
  "vas_order_created": "pesanan value added service telah dicipta",
1692
- "title.location_scanned_is_not_quarantine_zone": "[ms] Location scanned is not a quarantine zone!",
1693
- "text.release_qty_invalid": "[ms] release quantity is invalid",
1694
1698
  "text.generate_worksheet": "[ms] generate worksheet"
1695
1699
  }
@@ -1148,6 +1148,7 @@
1148
1148
  "text.picking_worksheet_will_be_activated": "picking worksheet will be activated",
1149
1149
  "text.picking_worksheet_will_be_generated": "picking worksheet will be generated",
1150
1150
  "text.pickup_info_is_not_completed": "pickup info is not completed",
1151
+ "text.please_attach_the_file": "[zh]please attach the file",
1151
1152
  "text.please_check_your_setting": "please check your setting",
1152
1153
  "text.please_check_your_vas_target": "[zh] please check your vas target",
1153
1154
  "text.please_key_in_new_serial_number": "[zh]please key in new serial number",
@@ -1157,6 +1158,7 @@
1157
1158
  "text.please_select_a_truck": "select a truck",
1158
1159
  "text.please_select_label_indicator": "please select label indicator",
1159
1160
  "text.please_select_release_order": "[zh] please select release order",
1161
+ "text.please_select_the_company": "[zh]please select the company",
1160
1162
  "text.please_select_the_contact_type": "please select the contact type",
1161
1163
  "text.please_select_the_location_again": "please select the location again",
1162
1164
  "text.please_select_the_location": "please select the location",
@@ -1190,6 +1192,7 @@
1190
1192
  "text.related_arrival_notice_will_be_deleted": "related arrival notice will be deleted",
1191
1193
  "text.related_release_order_will_be_rejected": "related release order will be rejected",
1192
1194
  "text.release_date_is_empty": "[zh]release date is empty",
1195
+ "text.backdate_is_not_allowed": "[zh]backdate is not allowed",
1193
1196
  "text.release_date_is_required": "[zh]release date is required",
1194
1197
  "text.release_order_confirmed": "release order confirmed",
1195
1198
  "text.release_order_created": "release order created",
@@ -1202,6 +1205,7 @@
1202
1205
  "text.release_order_rejected": "release order rejected",
1203
1206
  "text.release_order_will_be_deleted": "release order will be deleted",
1204
1207
  "text.release_qty_cannot_exceed_stored_qty": "release qty cannot exceed stored qty",
1208
+ "text.release_qty_invalid": "[zh] release quantity is invalid",
1205
1209
  "text.release_qty_is_empty": "release quantity is empty",
1206
1210
  "text.release_qty_is_more_than_expected": "release qty is more than expected",
1207
1211
  "text.remark_is_empty": "remark is empty",
@@ -1311,6 +1315,7 @@
1311
1315
  "text.x_should_be_positive": "{state.x} should be positive value",
1312
1316
  "text.yes": "yes",
1313
1317
  "text.you_can_only_select_one_transport_type": "you can only select one transport type",
1318
+ "text.you_can_only_upload_one_file_max": "[zh]you can only upload one file max",
1314
1319
  "text.you_wont_be_able_to_revert_this": "you won't be able to revert this",
1315
1320
  "text.you.are.now.in": "you are now in {state.text}",
1316
1321
  "text.your_work_has_completed": "your work has completed",
@@ -1454,6 +1459,7 @@
1454
1459
  "title.loaded": "loaded",
1455
1460
  "title.loading": "loading",
1456
1461
  "title.location_label_format": "location label format",
1462
+ "title.location_scanned_is_not_quarantine_zone": "[zh] Location scanned is not a quarantine zone!",
1457
1463
  "title.location_sorting_rule": "location sorting rule",
1458
1464
  "title.location": "location",
1459
1465
  "title.lot_information": "lot information",
@@ -1639,7 +1645,5 @@
1639
1645
  "title.worksheet_vas": "worksheet vas",
1640
1646
  "title.worksheet": "worksheet",
1641
1647
  "vas_order_created": "vas order created",
1642
- "title.location_scanned_is_not_quarantine_zone": "[zh] Location scanned is not a quarantine zone!",
1643
- "text.release_qty_invalid": "[zh] release quantity is invalid",
1644
1648
  "text.generate_worksheet": "[zh] generate worksheet"
1645
1649
  }