@things-factory/operato-wms 3.7.2 → 3.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/client/pages/components/select-product-popup.js +5 -1
  2. package/client/pages/constants/order.js +10 -0
  3. package/client/pages/inbound/putaway-product.js +162 -139
  4. package/client/pages/inventory-check/inspecting-product.js +146 -80
  5. package/client/pages/manifest/create-loading-manifest.js +314 -0
  6. package/client/pages/manifest/dispatcher-verification-popup.js +86 -0
  7. package/client/pages/manifest/loading-manifest-detail.js +345 -0
  8. package/client/pages/manifest/loading-manifest-list.js +305 -0
  9. package/client/pages/order/arrival-notice/create-arrival-notice.js +8 -1
  10. package/client/pages/order/goods-received-note/received-note-list.js +138 -6
  11. package/client/pages/order/release-order/b2b/b2b-order-list.js +45 -5
  12. package/client/pages/order/release-order/b2b/b2b-order-requests.js +45 -5
  13. package/client/pages/order/release-order/b2c/b2c-order-requests.js +181 -21
  14. package/client/pages/order/release-order/bulk-print-packing-list.js +23 -0
  15. package/client/pages/order/release-order/create-release-order.js +25 -4
  16. package/client/pages/order/release-order/receive-release-order-request.js +27 -24
  17. package/client/pages/order/release-order/release-extra-product-popup.js +189 -56
  18. package/client/pages/order/release-order/release-order-detail.js +292 -71
  19. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-detail.js +115 -50
  20. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-list.js +1 -6
  21. package/client/pages/order/reverse-kitting-order/reverse-kitting-pallet-label-popup.js +239 -0
  22. package/client/pages/order/transport-order/delivery-order-list.js +99 -59
  23. package/client/pages/outbound/loading-product.js +4 -1
  24. package/client/pages/outbound/merged-outbound-worksheet.js +39 -1
  25. package/client/pages/outbound/packing-product.js +4 -1
  26. package/client/pages/outbound/packing-worksheet-list.js +39 -1
  27. package/client/pages/outbound/picking-product.js +622 -290
  28. package/client/pages/outbound/serial-number-popup.js +280 -0
  29. package/client/pages/outbound/worksheet-picking.js +28 -2
  30. package/client/pages/report/product-label-report.js +401 -0
  31. package/client/pages/support/inventory-comparison.js +296 -0
  32. package/client/pages/vas/print-product-label.js +298 -132
  33. package/client/pages/vas/reverse-kitting/execute-reverse-kitting.js +30 -12
  34. package/client/pages/vas/reverse-kitting/popup-combination-sets.js +75 -5
  35. package/client/pages/vas/reverse-kitting/popup-reverse-kitting-template.js +113 -18
  36. package/client/route.js +23 -0
  37. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +64 -54
  38. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
  39. package/dist-server/graphql/resolvers/extra/add-release-good-products.js +34 -9
  40. package/dist-server/graphql/resolvers/extra/add-release-good-products.js.map +1 -1
  41. package/dist-server/graphql/resolvers/index.js +3 -1
  42. package/dist-server/graphql/resolvers/index.js.map +1 -1
  43. package/dist-server/graphql/resolvers/inventory-comparison/index.js +6 -0
  44. package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +1 -0
  45. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +78 -0
  46. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -0
  47. package/dist-server/graphql/resolvers/reports/index.js +2 -1
  48. package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
  49. package/dist-server/graphql/resolvers/reports/product-label-report.js +56 -0
  50. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -0
  51. package/dist-server/graphql/types/index.js +5 -2
  52. package/dist-server/graphql/types/index.js.map +1 -1
  53. package/dist-server/graphql/types/inventory-comparison/index.js +13 -0
  54. package/dist-server/graphql/types/inventory-comparison/index.js.map +1 -0
  55. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +14 -0
  56. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +1 -0
  57. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +18 -0
  58. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +1 -0
  59. package/dist-server/graphql/types/reports/index.js +6 -1
  60. package/dist-server/graphql/types/reports/index.js.map +1 -1
  61. package/dist-server/graphql/types/reports/product-label-report-list.js +14 -0
  62. package/dist-server/graphql/types/reports/product-label-report-list.js.map +1 -0
  63. package/dist-server/graphql/types/reports/product-label-report.js +16 -0
  64. package/dist-server/graphql/types/reports/product-label-report.js.map +1 -0
  65. package/package.json +65 -65
  66. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +75 -65
  67. package/server/graphql/resolvers/extra/add-release-good-products.ts +57 -15
  68. package/server/graphql/resolvers/index.ts +3 -1
  69. package/server/graphql/resolvers/inventory-comparison/index.ts +5 -0
  70. package/server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts +99 -0
  71. package/server/graphql/resolvers/reports/index.ts +3 -1
  72. package/server/graphql/resolvers/reports/product-label-report.ts +56 -0
  73. package/server/graphql/types/index.ts +5 -2
  74. package/server/graphql/types/inventory-comparison/index.ts +11 -0
  75. package/server/graphql/types/inventory-comparison/inventory-comparison-list.ts +8 -0
  76. package/server/graphql/types/inventory-comparison/inventory-comparison.ts +12 -0
  77. package/server/graphql/types/reports/index.ts +6 -1
  78. package/server/graphql/types/reports/product-label-report-list.ts +8 -0
  79. package/server/graphql/types/reports/product-label-report.ts +10 -0
  80. package/things-factory.config.js +24 -0
  81. package/translations/en.json +64 -12
  82. package/translations/ko.json +50 -1
  83. package/translations/ms.json +51 -1
  84. package/translations/zh.json +50 -1
@@ -174,7 +174,11 @@ class SelectProductPopup extends localize(i18next)(LitElement) {
174
174
  }
175
175
 
176
176
  async fetchProducts({ page, limit, sorters = [] }) {
177
- const filters = [...this.searchForm.queryFilters, { name: 'bizplace_id', operator: 'eq', value: this.bizplaceId }]
177
+ const filters = [
178
+ ...this.searchForm.queryFilters,
179
+ { name: 'bizplace_id', operator: 'eq', value: this.bizplaceId },
180
+ { name: 'create_arrival_notice', operator: 'eq', value: true }
181
+ ]
178
182
  const pagination = { page, limit }
179
183
  const sortings = sorters
180
184
 
@@ -62,6 +62,16 @@ export const ORDER_STATUS = {
62
62
  READY_TO_SEND: { name: 'order_status_ready_to_send', value: 'READY_TO_SEND' }
63
63
  }
64
64
 
65
+ export const MANIFEST_STATUS = {
66
+ OPEN: { name: 'open', value: 'OPEN' },
67
+ CLOSED: { name: 'closed', value: 'CLOSED' }
68
+ }
69
+
70
+ export const DISPATCHMENT_STATUS = {
71
+ READY_TO_DISPATCH: { name: 'ready_to_dispatch', value: 'READY_TO_DISPATCH' },
72
+ DISPATCHED: { name: 'dispatched', value: 'DISPATCHED' }
73
+ }
74
+
65
75
  export const ORDER_PRODUCT_STATUS = {
66
76
  ADDED: { name: 'added', value: 'ADDED' },
67
77
  READY_TO_APPROVED: { name: 'ready_to_approve', value: 'READY_TO_APPROVED' },
@@ -38,7 +38,8 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
38
38
  _operationType: String,
39
39
  incompleteLocationName: Boolean,
40
40
  locations: Array,
41
- recommendLocationName: String
41
+ recommendLocationName: String,
42
+ _scanning: Boolean
42
43
  }
43
44
  }
44
45
 
@@ -328,6 +329,7 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
328
329
  this._selectedTaskStatus = null
329
330
  this.recommendLocationName = null
330
331
  this._operationType = OPERATION_TYPE.PUTAWAY
332
+ this._scanning = false
331
333
  }
332
334
 
333
335
  get completed() {
@@ -778,166 +780,187 @@ class PutawayProduct extends connect(store)(localize(i18next)(PageView)) {
778
780
  }
779
781
 
780
782
  async _arrivalNoticePutaway() {
781
- try {
782
- await this._validatePutaway()
783
- if (!this.incompleteLocationName) {
784
- let worksheetDetailNames = []
785
- if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
786
- else worksheetDetailNames.push(this._selectedOrderProduct.name)
787
-
788
- const response = await client.mutate({
789
- mutation: gql`
790
- mutation putaway(
791
- $worksheetDetailName: [String]!
792
- $palletId: String
793
- $cartonId: String
794
- $toLocation: String!
795
- ) {
796
- putaway(
797
- worksheetDetailName: $worksheetDetailName
798
- palletId: $palletId
799
- cartonId: $cartonId
800
- toLocation: $toLocation
801
- )
783
+ if (this._scanning === false) {
784
+ this._scanning = true
785
+ try {
786
+ await this._validatePutaway()
787
+ if (!this.incompleteLocationName) {
788
+ let worksheetDetailNames = []
789
+ if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
790
+ else worksheetDetailNames.push(this._selectedOrderProduct.name)
791
+
792
+ const response = await client.mutate({
793
+ mutation: gql`
794
+ mutation putaway(
795
+ $worksheetDetailName: [String]!
796
+ $palletId: String
797
+ $cartonId: String
798
+ $toLocation: String!
799
+ ) {
800
+ putaway(
801
+ worksheetDetailName: $worksheetDetailName
802
+ palletId: $palletId
803
+ cartonId: $cartonId
804
+ toLocation: $toLocation
805
+ )
806
+ }
807
+ `,
808
+ variables: {
809
+ worksheetDetailName: worksheetDetailNames,
810
+ palletId: this._enableCartonLabel ? null : this.palletInput.value,
811
+ cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
812
+ toLocation: this.locationInput.value
802
813
  }
803
- `,
804
- variables: {
805
- worksheetDetailName: worksheetDetailNames,
806
- palletId: this._enableCartonLabel ? null : this.palletInput.value,
807
- cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
808
- toLocation: this.locationInput.value
809
- }
810
- })
811
-
812
- if (!response.errors) {
813
- this._fetchProducts(this.orderNo)
814
- if (this._enableCartonLabel) {
815
- this.cartonInput.value = ''
816
- this._focusOnCartonInput()
817
- } else {
818
- this.palletInput.value = ''
819
- this._focusOnPalletInput()
814
+ })
815
+
816
+ if (!response.errors) {
817
+ this._fetchProducts(this.orderNo)
818
+ if (this._enableCartonLabel) {
819
+ this.cartonInput.value = ''
820
+ this._focusOnCartonInput()
821
+ } else {
822
+ this.palletInput.value = ''
823
+ this._focusOnPalletInput()
824
+ }
825
+ this._selectedTaskStatus = null
826
+ this._selectedOrderProduct = null
827
+ this.recommendLocationName = null
828
+ this.locationInput.value = ''
820
829
  }
821
- this._selectedTaskStatus = null
822
- this._selectedOrderProduct = null
823
- this.recommendLocationName = null
824
- this.locationInput.value = ''
830
+ } else {
831
+ this._openSelectLocationPopup()
825
832
  }
826
- } else {
827
- this._openSelectLocationPopup()
833
+ } catch (e) {
834
+ this._showToast(e)
828
835
  }
829
- } catch (e) {
830
- this._showToast(e)
836
+
837
+ this._scanning = false
838
+ } else {
839
+ this._showToast({ message: i18next.t('text.previous_scan_is_executing') })
831
840
  }
832
841
  }
833
842
 
834
843
  async _customerReturnPutaway() {
835
- try {
836
- await this._validatePutaway()
837
- if (!this.incompleteLocationName) {
838
- let worksheetDetailNames = []
839
- if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
840
- else worksheetDetailNames.push(this._selectedOrderProduct.name)
841
-
842
- const response = await client.mutate({
843
- mutation: gql`
844
- mutation putawayReturn(
845
- $worksheetDetailName: [String]!
846
- $palletId: String
847
- $cartonId: String
848
- $toLocation: String!
849
- ) {
850
- putawayReturn(
851
- worksheetDetailName: $worksheetDetailName
852
- palletId: $palletId
853
- cartonId: $cartonId
854
- toLocation: $toLocation
855
- )
844
+ if (this._scanning === false) {
845
+ this._scanning = true
846
+ try {
847
+ await this._validatePutaway()
848
+ if (!this.incompleteLocationName) {
849
+ let worksheetDetailNames = []
850
+ if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
851
+ else worksheetDetailNames.push(this._selectedOrderProduct.name)
852
+
853
+ const response = await client.mutate({
854
+ mutation: gql`
855
+ mutation putawayReturn(
856
+ $worksheetDetailName: [String]!
857
+ $palletId: String
858
+ $cartonId: String
859
+ $toLocation: String!
860
+ ) {
861
+ putawayReturn(
862
+ worksheetDetailName: $worksheetDetailName
863
+ palletId: $palletId
864
+ cartonId: $cartonId
865
+ toLocation: $toLocation
866
+ )
867
+ }
868
+ `,
869
+ variables: {
870
+ worksheetDetailName: worksheetDetailNames,
871
+ palletId: this._enableCartonLabel ? null : this.palletInput.value,
872
+ cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
873
+ toLocation: this.locationInput.value
874
+ }
875
+ })
876
+
877
+ if (!response.errors) {
878
+ this._fetchProducts(this.orderNo)
879
+ if (this._enableCartonLabel) {
880
+ this.cartonInput.value = ''
881
+ this._focusOnCartonInput()
882
+ } else {
883
+ this.palletInput.value = ''
884
+ this._focusOnPalletInput()
856
885
  }
857
- `,
858
- variables: {
859
- worksheetDetailName: worksheetDetailNames,
860
- palletId: this._enableCartonLabel ? null : this.palletInput.value,
861
- cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
862
- toLocation: this.locationInput.value
863
- }
864
- })
865
886
 
866
- if (!response.errors) {
867
- this._fetchProducts(this.orderNo)
868
- if (this._enableCartonLabel) {
869
- this.cartonInput.value = ''
870
- this._focusOnCartonInput()
871
- } else {
872
- this.palletInput.value = ''
873
- this._focusOnPalletInput()
887
+ this._selectedTaskStatus = null
888
+ this._selectedOrderProduct = null
889
+ this.recommendLocationName = null
890
+ this.locationInput.value = ''
874
891
  }
875
-
876
- this._selectedTaskStatus = null
877
- this._selectedOrderProduct = null
878
- this.recommendLocationName = null
879
- this.locationInput.value = ''
892
+ } else {
893
+ this._openSelectLocationPopup()
880
894
  }
881
- } else {
882
- this._openSelectLocationPopup()
895
+ } catch (e) {
896
+ this._showToast(e)
883
897
  }
884
- } catch (e) {
885
- this._showToast(e)
898
+
899
+ this._scanning = false
900
+ } else {
901
+ this._showToast({ message: i18next.t('text.previous_scan_is_executing') })
886
902
  }
887
903
  }
888
904
 
889
905
  async _warehouseReturnPutaway() {
890
- try {
891
- await this._validatePutaway()
892
- if (!this.incompleteLocationName) {
893
- let worksheetDetailNames = []
894
- if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
895
- else worksheetDetailNames.push(this._selectedOrderProduct.name)
896
-
897
- const response = await client.mutate({
898
- mutation: gql`
899
- mutation returning(
900
- $worksheetDetailName: [String]!
901
- $palletId: String
902
- $cartonId: String
903
- $toLocation: String!
904
- ) {
905
- returning(
906
- worksheetDetailName: $worksheetDetailName
907
- palletId: $palletId
908
- cartonId: $cartonId
909
- toLocation: $toLocation
910
- )
906
+ if (this._scanning === false) {
907
+ this._scanning = true
908
+ try {
909
+ await this._validatePutaway()
910
+ if (!this.incompleteLocationName) {
911
+ let worksheetDetailNames = []
912
+ if (this._enableCartonLabel) worksheetDetailNames = this._getSelectedOrderProducts(this.cartonInput.value)
913
+ else worksheetDetailNames.push(this._selectedOrderProduct.name)
914
+
915
+ const response = await client.mutate({
916
+ mutation: gql`
917
+ mutation returning(
918
+ $worksheetDetailName: [String]!
919
+ $palletId: String
920
+ $cartonId: String
921
+ $toLocation: String!
922
+ ) {
923
+ returning(
924
+ worksheetDetailName: $worksheetDetailName
925
+ palletId: $palletId
926
+ cartonId: $cartonId
927
+ toLocation: $toLocation
928
+ )
929
+ }
930
+ `,
931
+ variables: {
932
+ worksheetDetailName: worksheetDetailNames,
933
+ palletId: this._enableCartonLabel ? null : this.palletInput.value,
934
+ cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
935
+ toLocation: this.locationInput.value
936
+ }
937
+ })
938
+
939
+ if (!response.errors) {
940
+ this._fetchProducts(this.orderNo)
941
+ if (this._enableCartonLabel) {
942
+ this.cartonInput.value = ''
943
+ this._focusOnCartonInput()
944
+ } else {
945
+ this.palletInput.value = ''
946
+ this._focusOnPalletInput()
911
947
  }
912
- `,
913
- variables: {
914
- worksheetDetailName: worksheetDetailNames,
915
- palletId: this._enableCartonLabel ? null : this.palletInput.value,
916
- cartonId: this._enableCartonLabel ? this.cartonInput.value : null,
917
- toLocation: this.locationInput.value
918
- }
919
- })
920
948
 
921
- if (!response.errors) {
922
- this._fetchProducts(this.orderNo)
923
- if (this._enableCartonLabel) {
924
- this.cartonInput.value = ''
925
- this._focusOnCartonInput()
926
- } else {
927
- this.palletInput.value = ''
928
- this._focusOnPalletInput()
949
+ this._selectedTaskStatus = null
950
+ this._selectedOrderProduct = null
951
+ this.recommendLocationName = null
952
+ this.locationInput.value = ''
929
953
  }
930
-
931
- this._selectedTaskStatus = null
932
- this._selectedOrderProduct = null
933
- this.recommendLocationName = null
934
- this.locationInput.value = ''
954
+ } else {
955
+ this._openSelectLocationPopup()
935
956
  }
936
- } else {
937
- this._openSelectLocationPopup()
957
+ } catch (e) {
958
+ this._showToast(e)
938
959
  }
939
- } catch (e) {
940
- this._showToast(e)
960
+
961
+ this._scanning = false
962
+ } else {
963
+ this._showToast({ message: i18next.t('text.previous_scan_is_executing') })
941
964
  }
942
965
  }
943
966