@things-factory/operato-wms 3.8.1 → 3.8.5

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.
@@ -280,7 +280,13 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
280
280
  <label class="content">${this?._selectedInventory?.packingType || '-'}</label>
281
281
 
282
282
  <label class="content-title">${i18next.t('label.qty')}</label>
283
- <label class="content">${this?._selectedInventory?.qty || '-'}</label>
283
+ <label class="content">${(this?._selectedInventory?.qty || 0).toString()}</label>
284
+
285
+ <label class="content-title">${i18next.t('label.reserve_qty')}</label>
286
+ <label class="content">${(this?._selectedInventory?.lockedQty || 0).toString()}</label>
287
+
288
+ <label class="content-title">${i18next.t('label.available_qty')}</label>
289
+ <label class="content">${(this?._selectedInventory?.availableQty || 0).toString()}</label>
284
290
 
285
291
  <!-- <input name="fromLocationName" readonly /> -->
286
292
  </fieldset>
@@ -299,11 +305,11 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
299
305
  this.qtyInput.value = 0
300
306
  }
301
307
  if (this._selectedInventory) {
302
- if (this._selectedInventory.qty > parseInt(this.qtyInput.value)) {
308
+ if (this._selectedInventory.availableQty > parseInt(this.qtyInput.value)) {
303
309
  this._requireNewId = true
304
310
  } else {
305
- if (parseInt(this.qtyInput.value) > this._selectedInventory.qty) {
306
- this.qtyInput.value = this._selectedInventory.qty
311
+ if (parseInt(this.qtyInput.value) > this._selectedInventory.availableQty) {
312
+ this.qtyInput.value = this._selectedInventory.availableQty
307
313
  }
308
314
  this._requireNewId = false
309
315
  }
@@ -396,6 +402,8 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
396
402
  'packingType',
397
403
  'packingSize',
398
404
  'qty',
405
+ 'lockedQty',
406
+ 'availableQty',
399
407
  'expirationDate'
400
408
  ]
401
409
  },
@@ -480,6 +488,20 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
480
488
  header: i18next.t('field.qty'),
481
489
  width: 60
482
490
  },
491
+ {
492
+ type: 'integer',
493
+ name: 'lockedQty',
494
+ label: true,
495
+ header: i18next.t('field.reserve_qty'),
496
+ width: 60
497
+ },
498
+ {
499
+ type: 'integer',
500
+ name: 'availableQty',
501
+ label: true,
502
+ header: i18next.t('field.available_qty'),
503
+ width: 60
504
+ },
483
505
  {
484
506
  type: 'date',
485
507
  name: 'expirationDate',
@@ -568,7 +590,7 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
568
590
  return {
569
591
  ...record,
570
592
  sku: record.product.sku,
571
- qty: record.qty - record.lockedQty > 0 ? record.qty - record.lockedQty : 0
593
+ availableQty: record.qty - (record.lockedQty > 0 ? record.lockedQty : 0)
572
594
  }
573
595
  })
574
596
  }
@@ -654,7 +676,11 @@ class TransferInventory extends connect(store)(localize(i18next)(PageView)) {
654
676
  throw new Error(i18next.t('text.please_select_an_inventory'))
655
677
  }
656
678
 
657
- if (!this.qtyInput.value > 0) {
679
+ if (!(this._selectedInventory.availableQty > 0)) {
680
+ throw new Error(i18next.t('text.not_enough_available_qty'))
681
+ }
682
+
683
+ if (!parseInt(this.qtyInput?.value || 0) > 0) {
658
684
  throw new Error(i18next.t('text.please_enter_transfer_qty'))
659
685
  }
660
686
 
@@ -803,14 +803,18 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
803
803
  if (this._enableCartonLabel) {
804
804
  let worksheetDetail = this._getSelectedOrderProducts(this.cartonInput.value)
805
805
  worksheetDetailNames.push(worksheetDetail[0].name)
806
- if (worksheetDetail[0].expirationPeriod > 0 && locationDetails.type !== 'QUARANTINE') {
807
- await this._expiryAlert()
808
- }
806
+ await this._checkExpiry(
807
+ worksheetDetail[0].expirationPeriod,
808
+ new Date(worksheetDetail[0].expirationDate),
809
+ locationDetails.type
810
+ )
809
811
  } else {
810
812
  worksheetDetailNames.push(this._selectedOrderProduct.name)
811
- if (this._selectedOrderProduct.expirationPeriod > 0 && locationDetails.type !== 'QUARANTINE') {
812
- await this._expiryAlert()
813
- }
813
+ await this._checkExpiry(
814
+ this._selectedOrderProduct.expirationPeriod,
815
+ new Date(this._selectedOrderProduct.expirationDate),
816
+ locationDetails.type
817
+ )
814
818
  }
815
819
 
816
820
  const response = await client.mutate({
@@ -874,16 +878,20 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
874
878
  const locationDetails = await this._fetchLocation(this.locationInput.value.trim())
875
879
 
876
880
  if (this._enableCartonLabel) {
877
- worksheetDetailNames.push(worksheetDetail[0].name)
878
881
  let worksheetDetail = this._getSelectedOrderProducts(this.cartonInput.value)
879
- if (worksheetDetail[0].expirationPeriod > 0 && locationDetails.type !== 'QUARANTINE') {
880
- await this._expiryAlert()
881
- }
882
+ worksheetDetailNames.push(worksheetDetail[0].name)
883
+ await this._checkExpiry(
884
+ worksheetDetail[0].expirationPeriod,
885
+ new Date(worksheetDetail[0].expirationDate),
886
+ locationDetails.type
887
+ )
882
888
  } else {
883
889
  worksheetDetailNames.push(this._selectedOrderProduct.name)
884
- if (this._selectedOrderProduct.expirationPeriod > 0 && locationDetails.type !== 'QUARANTINE') {
885
- await this._expiryAlert()
886
- }
890
+ await this._checkExpiry(
891
+ this._selectedOrderProduct.expirationPeriod,
892
+ new Date(this._selectedOrderProduct.expirationDate),
893
+ locationDetails.type
894
+ )
887
895
  }
888
896
 
889
897
  const response = await client.mutate({
@@ -945,8 +953,10 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
945
953
  await this._validatePutaway()
946
954
  if (!this.incompleteLocationName) {
947
955
  let worksheetDetailNames = []
948
- if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
949
- else worksheetDetailNames.push(this._selectedOrderProduct.name)
956
+ if (this._enableCartonLabel) {
957
+ const selectedWorksheetDetailName = this._getSelectedOrderProducts(this.cartonInput.value)
958
+ worksheetDetailNames.push(selectedWorksheetDetailName[0].name)
959
+ } else worksheetDetailNames.push(this._selectedOrderProduct.name)
950
960
 
951
961
  const response = await client.mutate({
952
962
  mutation: gql`
@@ -1096,6 +1106,15 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
1096
1106
  }
1097
1107
  }
1098
1108
 
1109
+ async _checkExpiry(expirationPeriod, expiryDate, locationType) {
1110
+ let date = new Date()
1111
+ let acceptBefore = new Date(date.setDate(date.getDate() + expirationPeriod))
1112
+
1113
+ if (expirationPeriod > 0) {
1114
+ if (expiryDate < acceptBefore && locationType !== 'QUARANTINE') await this._expiryAlert()
1115
+ }
1116
+ }
1117
+
1099
1118
  _validateTransfer() {
1100
1119
  // 1. validate for order selection
1101
1120
  if (!this._selectedOrderProduct) throw new Error(i18next.t('text.target_is_not_selected'))
@@ -328,7 +328,7 @@ class UnloadProduct extends connect(store)(localize(i18next)(PageView)) {
328
328
  <input name="batchIdRef" readonly />
329
329
 
330
330
  <label>${i18next.t('label.packing_type')}</label>
331
- <input name="packingTypeSize" readonly />
331
+ <input name="packingType" readonly />
332
332
 
333
333
  <label>${i18next.t('label.total_pallet_qty')}</label>
334
334
  <input name="palletQty" type="number" readonly />
@@ -571,7 +571,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
571
571
  const filters = await this.searchForm.getQueryFilters()
572
572
  const response = await client.query({
573
573
  query: gql`
574
- query inventories($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
574
+ query inventories($filters: [Filter!]!, $pagination: Pagination, $sortings: [Sorting!]!) {
575
575
  inventories(filters: $filters, pagination: $pagination, sortings: $sortings) {
576
576
  items {
577
577
  id
@@ -768,7 +768,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
768
768
 
769
769
  const response = await client.mutate({
770
770
  mutation: gql`
771
- mutation submitInventoryChanges($patches: [InventoryPatch]!) {
771
+ mutation submitInventoryChanges($patches: [InventoryPatch!]!) {
772
772
  submitInventoryChanges(patches: $patches)
773
773
  }
774
774
  `,
@@ -828,13 +828,12 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
828
828
  data = await this.fetchInventoriesForExport()
829
829
  }
830
830
 
831
- let [product, bizplace] = await Promise.all([
831
+ let [product, bizplace, location] = await Promise.all([
832
832
  this.fetchProduct(bizplaceFilters),
833
- this.fetchBizplaces([{ ...bizplaceFilters[0], name: 'bizplace' }])
833
+ this.fetchBizplaces([{ ...bizplaceFilters[0], name: 'bizplace' }]),
834
+ this.fetchLocation()
834
835
  ])
835
836
 
836
- let location = this.fetchLocation()
837
-
838
837
  headerSetting = headerSetting.map(column => {
839
838
  switch (column.key) {
840
839
  case 'bizplace.name':
@@ -845,7 +844,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
845
844
  return { ...itm, name: `(${itm.sku}) ${itm.name} - ${itm.description}` }
846
845
  })
847
846
  break
848
- case 'location':
847
+ case 'location.name':
849
848
  column.arrData = location
850
849
  break
851
850
  default:
@@ -891,7 +890,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
891
890
  async fetchBizplaces(bizplace = []) {
892
891
  const response = await client.query({
893
892
  query: gql`
894
- query bizplaces($filters: [Filter!]) {
893
+ query bizplaces($filters: [Filter!]!) {
895
894
  bizplaces(filters: $filters) {
896
895
  items {
897
896
  id
@@ -911,7 +910,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
911
910
  bizplace[0].name = 'bizplace'
912
911
  const response = await client.query({
913
912
  query: gql`
914
- query productsByBizplace($filters: [Filter!]) {
913
+ query productsByBizplace($filters: [Filter!]!) {
915
914
  productsByBizplace(filters: $filters) {
916
915
  items {
917
916
  id
@@ -933,7 +932,7 @@ class InventoryAdjustment extends connect(store)(localize(i18next)(PageView)) {
933
932
  async fetchLocation() {
934
933
  const response = await client.query({
935
934
  query: gql`
936
- query locations($filters: [Filter!]) {
935
+ query locations($filters: [Filter!]!) {
937
936
  locations(filters: $filters) {
938
937
  items {
939
938
  id
@@ -60,13 +60,13 @@ class B2bOrderRequests extends localize(i18next)(PageView) {
60
60
  get context() {
61
61
  return {
62
62
  title: i18next.t('title.release_order_requests'),
63
- // actions: [
64
- // {
65
- // title: i18next.t('button.batch_picking'),
66
- // action: this._openBatchPickingPopup.bind(this),
67
- // ...CommonButtonStyles.activate
68
- // }
69
- // ],
63
+ actions: [
64
+ {
65
+ title: i18next.t('button.batch_picking'),
66
+ action: this._openBatchPickingPopup.bind(this),
67
+ ...CommonButtonStyles.activate
68
+ }
69
+ ],
70
70
  exportable: {
71
71
  name: i18next.t('title.release_order_requests'),
72
72
  data: this._exportableData.bind(this)
@@ -65,12 +65,12 @@ class B2cOrderRequests extends localize(i18next)(PageView) {
65
65
  title: i18next.t('button.generate_packing_list'),
66
66
  action: this._generatePackingList.bind(this),
67
67
  ...CommonButtonStyles.label
68
+ },
69
+ {
70
+ title: i18next.t('button.batch_picking'),
71
+ action: this._openBatchPickingPopup.bind(this),
72
+ ...CommonButtonStyles.activate
68
73
  }
69
- // {
70
- // title: i18next.t('button.batch_picking'),
71
- // action: this._openBatchPickingPopup.bind(this),
72
- // ...CommonButtonStyles.activate
73
- // }
74
74
  ],
75
75
  exportable: {
76
76
  name: i18next.t('title.release_order_requests'),
@@ -7,7 +7,7 @@ import { isMobileDevice } from '@things-factory/utils'
7
7
  import { css, html, LitElement } from 'lit-element'
8
8
  import gql from 'graphql-tag'
9
9
  import { ScrollbarStyles } from '@things-factory/styles'
10
- import { ORDER_STATUS } from '../../constants'
10
+ import { ORDER_STATUS, RO_TYPES } from '../../constants'
11
11
  import '@things-factory/biz-ui'
12
12
 
13
13
  class BatchPickingPopup extends localize(i18next)(LitElement) {
@@ -146,6 +146,16 @@ class BatchPickingPopup extends localize(i18next)(LitElement) {
146
146
  name: 'releaseDate',
147
147
  type: 'date',
148
148
  props: { searchOper: 'lte' }
149
+ },
150
+ {
151
+ label: i18next.t('field.type'),
152
+ name: 'type',
153
+ type: 'select',
154
+ options: Object.keys(RO_TYPES).map(map => {
155
+ debugger
156
+ return { name: RO_TYPES[map].name, value: RO_TYPES[map].value }
157
+ }),
158
+ props: { searchOper: 'eq' }
149
159
  }
150
160
  ]
151
161
 
@@ -165,6 +175,12 @@ class BatchPickingPopup extends localize(i18next)(LitElement) {
165
175
  header: i18next.t('field.release_good_no'),
166
176
  width: 150
167
177
  },
178
+ {
179
+ type: 'string',
180
+ name: 'type',
181
+ header: i18next.t('field.type'),
182
+ width: 100
183
+ },
168
184
  {
169
185
  type: 'string',
170
186
  name: 'refNo',
@@ -288,6 +304,7 @@ class BatchPickingPopup extends localize(i18next)(LitElement) {
288
304
  name
289
305
  refNo
290
306
  releaseDate
307
+ type
291
308
  bizplace {
292
309
  id
293
310
  name
@@ -1396,7 +1396,7 @@ class CreateReleaseOrder extends localize(i18next)(PageView) {
1396
1396
 
1397
1397
  async fetchInventoriesByBundle(productBundleId, bundleReleaseQty) {
1398
1398
  const page = 1
1399
- const limit = 200
1399
+ const limit = 99999
1400
1400
  const pagination = { page, limit }
1401
1401
  const filters = [
1402
1402
  {
@@ -1419,7 +1419,7 @@ class CreateReleaseOrder extends localize(i18next)(PageView) {
1419
1419
 
1420
1420
  const response = await client.query({
1421
1421
  query: gql`
1422
- query inventoriesByBundle($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
1422
+ query inventoriesByBundle($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
1423
1423
  inventoriesByBundle(filters: $filters, pagination: $pagination, sortings: $sortings) {
1424
1424
  bundleGroup {
1425
1425
  batchId
@@ -352,10 +352,18 @@ class PickingProduct extends connect(store)(localize(i18next)(PageView)) {
352
352
  if (e.keyCode === 13) {
353
353
  e.preventDefault()
354
354
  this._currentBinLocation = null
355
- if (this.releaseGoodNoInput.value) {
356
- this.releaseGoodNo = this.releaseGoodNoInput.value
357
- await this.fetchAll(this.releaseGoodNo)
358
- this.completeHandler()
355
+ if (this.refPickingType === PICKING_TYPES.PICKING.value) {
356
+ if (this.releaseGoodNoInput.value) {
357
+ this.releaseGoodNo = this.releaseGoodNoInput.value
358
+ await this.fetchAll(this.releaseGoodNo)
359
+ this.completeHandler()
360
+ }
361
+ } else {
362
+ if (this.taskNoInput.value) {
363
+ this.taskNo = this.taskNoInput.value
364
+ await this.fetchAll(this.taskNo)
365
+ this.completeHandler()
366
+ }
359
367
  }
360
368
  }
361
369
  }}"
@@ -571,7 +579,10 @@ class PickingProduct extends connect(store)(localize(i18next)(PageView)) {
571
579
  if (this.serialInput) this.serialInput.value = ''
572
580
 
573
581
  this._selectedOrderInventory = record
574
- await this.fetchInventories(this.releaseGoodNo)
582
+
583
+ await this.fetchInventories(
584
+ this.refPickingType === PICKING_TYPES.PICKING.value ? this.releaseGoodNo : this.taskNo
585
+ )
575
586
  let updatedRecords = this._selectedOrderInventory
576
587
  if (updatedRecords.releaseQty === updatedRecords.pickedQty) {
577
588
  updatedRecords.status = 'DONE'
@@ -846,12 +857,14 @@ class PickingProduct extends connect(store)(localize(i18next)(PageView)) {
846
857
  if (record.pickedQty == record.releaseQty) {
847
858
  if (this._isCartonLabel) {
848
859
  this.cartonInput.value = ''
849
- this._focusOnCartonNoInput()
860
+ this.productBarcodeInput.value = ''
861
+ // this._focusOnCartonNoInput()
850
862
  }
851
863
  this.inputForm.reset()
852
864
  } else {
853
- this._focusOnProductBarcodeInput()
865
+ // this._focusOnProductBarcodeInput()
854
866
  this.fillUpForm(this.inputForm, record)
867
+ this.focusOnInput()
855
868
  }
856
869
  }
857
870
  }
@@ -1048,21 +1061,7 @@ class PickingProduct extends connect(store)(localize(i18next)(PageView)) {
1048
1061
  openSerialNumberPopup() {
1049
1062
  openPopup(
1050
1063
  html`
1051
- <serial-number-popup
1052
- .orderInventory="${this?._selectedOrderInventory?.relatedOrderInv}"
1053
- @completed="${() => {
1054
- // if (this.refPickingType === PICKING_TYPES.PICKING.value) {
1055
- // this.fetchInventories(this.releaseGoodNoInput.value)
1056
- // this.fetchPalletsHandler(this.releaseGoodNoInput.value)
1057
- // } else {
1058
- // this.fetchInventories(this.taskNoInput.value)
1059
- // this.fetchPalletsHandler(this.taskNoInput.value)
1060
- // }
1061
- // // this._selectedTaskStatus = null
1062
- // this._selectedOrderInventory = null
1063
- // this._isReplacement = false
1064
- }}"
1065
- ></serial-number-popup>
1064
+ <serial-number-popup .orderInventory="${this?._selectedOrderInventory?.relatedOrderInv}"></serial-number-popup>
1066
1065
  `,
1067
1066
  {
1068
1067
  backdrop: true,
@@ -475,6 +475,7 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
475
475
  id
476
476
  batchId
477
477
  packingType
478
+ releaseQty
478
479
  product {
479
480
  name
480
481
  sku
@@ -549,7 +550,8 @@ class PrintProductLabel extends connect(store)(localize(i18next)(PageView)) {
549
550
  auxValue1: product.auxValue1 || '',
550
551
  auxUnit2: product.auxUnit2 || '',
551
552
  auxValue2: product.auxValue2 || '',
552
- bizplaceId: releaseGood.bizplace.id
553
+ bizplaceId: releaseGood.bizplace.id,
554
+ printQty: oi.releaseQty || 0
553
555
  }
554
556
 
555
557
  if (product.productDetails && product.productDetails.length) {
@@ -28,6 +28,7 @@ exports.productLabelReport = {
28
28
  WHERE "bizplace_id" = '${bizplaceId}'
29
29
  ${type ? `AND "type" ilike '%${type}%'` : ''}
30
30
  AND "date"::date BETWEEN '${fromDate}' AND '${toDate}'
31
+ ORDER BY type ASC, date ASC
31
32
  `);
32
33
  // @farishelmi any usage for this function? If no please remove.
33
34
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"product-label-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/product-label-report.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,+DAAsE;AAGzD,QAAA,kBAAkB,GAAG;IAChC,KAAK,CAAC,kBAAkB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;;QAC9D,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;YACpD,uDAAuD;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC9E,MAAM,IAAI,GAAG,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,KAAK,CAAA;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAA;YAExE,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;YAEzE,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAa,EAAC,uBAAQ,CAAC,CAAC,KAAK,CAAC;;;;;;;uDAOD,4BAAa,CAAC,qBAAqB;oCACtD,MAAM,CAAC,EAAE;;iCAEZ,UAAU;UACjC,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;oCAChB,QAAQ,UAAU,MAAM;OACrD,CAAC,CAAA;YAEF,gEAAgE;YAChE;;;;;;;;;;;;cAYE;YAEF,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,CAAC;aACT,CAAA;SACF;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"product-label-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/product-label-report.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,+DAAsE;AAGzD,QAAA,kBAAkB,GAAG;IAChC,KAAK,CAAC,kBAAkB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;;QAC9D,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;YACpD,uDAAuD;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC9E,MAAM,IAAI,GAAG,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,KAAK,CAAA;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAA;YAExE,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;YAEzE,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAa,EAAC,uBAAQ,CAAC,CAAC,KAAK,CAAC;;;;;;;uDAOD,4BAAa,CAAC,qBAAqB;oCACtD,MAAM,CAAC,EAAE;;iCAEZ,UAAU;UACjC,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;oCAChB,QAAQ,UAAU,MAAM;;OAErD,CAAC,CAAA;YAEF,gEAAgE;YAChE;;;;;;;;;;;;cAYE;YAEF,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,CAAC;aACT,CAAA;SACF;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-wms",
3
- "version": "3.8.1",
3
+ "version": "3.8.5",
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.1",
72
+ "@things-factory/product-base": "^3.8.3",
73
73
  "@things-factory/resource-ui": "^3.8.0",
74
- "@things-factory/sales-ui": "^3.8.1",
74
+ "@things-factory/sales-ui": "^3.8.5",
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.1",
106
- "@things-factory/worksheet-base": "^3.8.1"
105
+ "@things-factory/warehouse-base": "^3.8.5",
106
+ "@things-factory/worksheet-base": "^3.8.5"
107
107
  },
108
108
  "devDependencies": {
109
109
  "@things-factory/builder": "^3.7.5"
110
110
  },
111
- "gitHead": "2f2534de2c0866a693f6ec9949b35a5a0e65065f"
111
+ "gitHead": "1f8f8ca9c0d96737732388c9cc685e64b0759a96"
112
112
  }
@@ -28,6 +28,7 @@ export const productLabelReport = {
28
28
  WHERE "bizplace_id" = '${bizplaceId}'
29
29
  ${type ? `AND "type" ilike '%${type}%'` : ''}
30
30
  AND "date"::date BETWEEN '${fromDate}' AND '${toDate}'
31
+ ORDER BY type ASC, date ASC
31
32
  `)
32
33
 
33
34
  // @farishelmi any usage for this function? If no please remove.
@@ -545,6 +545,7 @@
545
545
  "label.attention_to": "attention to",
546
546
  "label.availabel_pallet_qty": "available pallet qty",
547
547
  "label.available_qty": "available qty",
548
+ "label.reserve_qty": "reserve qty",
548
549
  "label.bag": "bag",
549
550
  "label.balance": "balance",
550
551
  "label.batch_and_product": "batch and product",
@@ -583,6 +583,7 @@
583
583
  "label.attention_to": "[ko] attention to",
584
584
  "label.availabel_pallet_qty": "사용 가능 파레트 수량",
585
585
  "label.available_qty": "사용가능 수량",
586
+ "label.reserve_qty": "[ko] reserve qty",
586
587
  "label.bag_crates_carton_ibc_drums_pails": "bag/crates/carton/ibc/drums/pails",
587
588
  "label.bag": "백",
588
589
  "label.balance": "잔고",
@@ -560,6 +560,7 @@
560
560
  "label.attention_to": "[ms] attention to",
561
561
  "label.availabel_pallet_qty": "baki kuantiti palet",
562
562
  "label.available_qty": "baki kuantiti",
563
+ "label.reserve_qty": "[ms] reserve qty",
563
564
  "label.bag": "beg",
564
565
  "label.balance": "baki",
565
566
  "label.batch_and_product": "batch and product",
@@ -540,6 +540,7 @@
540
540
  "label.attention_to": "[zh] attention to",
541
541
  "label.availabel_pallet_qty": "available pallet qty",
542
542
  "label.available_qty": "available qty",
543
+ "label.reserve_qty": "[zh] reserve qty",
543
544
  "label.bag": "bag",
544
545
  "label.balance": "balance",
545
546
  "label.batch_and_product": "batch and product",