@things-factory/operato-wms 5.0.13 → 6.0.0-alpha.1

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 (206) hide show
  1. package/client/pages/bulk-operation/bulk-operation.js +96 -8
  2. package/client/pages/bulk-operation/validate-gan-popup.js +37 -27
  3. package/client/pages/bulk-operation/validate-ro-popup.js +40 -0
  4. package/client/pages/components/select-inventory-popup.js +633 -0
  5. package/client/pages/constants/order.js +2 -1
  6. package/client/pages/inbound/pallet-label-popup.js +2 -0
  7. package/client/pages/inbound/select-product-batch.js +7 -1
  8. package/client/pages/inbound/undo-unload-popup.js +37 -21
  9. package/client/pages/inbound/unload-product.js +147 -59
  10. package/client/pages/inbound/worksheet-putaway.js +1 -1
  11. package/client/pages/inbound/worksheet-unloading.js +11 -7
  12. package/client/pages/inventory/inventory-adjustment.js +261 -238
  13. package/client/pages/inventory/inventory-by-product-detail.js +99 -92
  14. package/client/pages/inventory/inventory-by-product.js +170 -68
  15. package/client/pages/inventory/onhand-inventory.js +10 -12
  16. package/client/pages/inventory/serial-number-list-popup.js +36 -5
  17. package/client/pages/inventory-check/inspecting-product.js +1 -1
  18. package/client/pages/manifest/create-loading-manifest.js +47 -22
  19. package/client/pages/manifest/dispatcher-verification-popup.js +24 -13
  20. package/client/pages/manifest/loading-manifest-detail.js +311 -46
  21. package/client/pages/manifest/loading-manifest-list.js +86 -13
  22. package/client/pages/order/arrival-notice/arrival-notice-detail.js +305 -52
  23. package/client/pages/order/arrival-notice/arrival-notice-list.js +20 -1
  24. package/client/pages/order/arrival-notice/create-arrival-notice.js +2 -2
  25. package/client/pages/order/goods-received-note/received-note-detail.js +187 -15
  26. package/client/pages/order/release-order/b2b/b2b-order-list.js +76 -80
  27. package/client/pages/order/release-order/b2c/b2c-order-requests.js +148 -123
  28. package/client/pages/order/release-order/batch-picking-popup.js +11 -0
  29. package/client/pages/order/release-order/create-release-order.js +762 -250
  30. package/client/pages/order/release-order/release-extra-product-popup.js +10 -3
  31. package/client/pages/order/release-order/release-order-detail.js +897 -215
  32. package/client/pages/order/transport-order/delivery-note-popup.js +1050 -107
  33. package/client/pages/order/transport-order/print-delivery-note.js +214 -33
  34. package/client/pages/order/transport-order/upload-delivery-note.js +6 -4
  35. package/client/pages/order/transport-order/view-delivery-note.js +0 -1
  36. package/client/pages/outbound/generate-worksheet-popup.js +374 -0
  37. package/client/pages/outbound/inventory-reassign-popup.js +1097 -0
  38. package/client/pages/outbound/loading-product.js +88 -78
  39. package/client/pages/outbound/merged-outbound-worksheet.js +1 -1
  40. package/client/pages/outbound/packing-product.js +193 -82
  41. package/client/pages/outbound/packing-worksheet-list.js +10 -9
  42. package/client/pages/outbound/picking-product.js +979 -905
  43. package/client/pages/outbound/route-label-popup.js +283 -191
  44. package/client/pages/outbound/serial-number-popup.js +1 -0
  45. package/client/pages/outbound/sorting-product.js +12 -12
  46. package/client/pages/outbound/worksheet-batch-picking.js +39 -5
  47. package/client/pages/outbound/worksheet-packing.js +17 -4
  48. package/client/pages/outbound/worksheet-picking.js +45 -6
  49. package/client/pages/report/inbound-serial-number-report.js +86 -9
  50. package/client/pages/report/inventory-report.js +10 -0
  51. package/client/pages/report/inventory-summary-report.js +28 -19
  52. package/client/pages/report/outbound-order-details-report.js +204 -43
  53. package/client/pages/report/outbound-serial-number-report.js +87 -9
  54. package/client/pages/report/release-inventory-report.js +503 -0
  55. package/client/route.js +5 -0
  56. package/client/util/index.js +2 -0
  57. package/client/util/page-settings.js +43 -0
  58. package/client/util/toast.js +10 -0
  59. package/dist-server/graphql/resolvers/board-setting/board-settings.js +3 -3
  60. package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +1 -1
  61. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js +2 -2
  62. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +1 -1
  63. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js +1 -1
  64. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +1 -1
  65. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js +2 -2
  66. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +1 -1
  67. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +9 -10
  68. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  69. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +2 -2
  70. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
  71. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +6 -4
  72. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +1 -1
  73. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +6 -4
  74. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +1 -1
  75. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +21 -10
  76. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +1 -1
  77. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +1 -2
  78. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +1 -1
  79. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +1 -2
  80. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +1 -1
  81. package/dist-server/graphql/resolvers/dashboard/index.js +2 -1
  82. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -1
  83. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js +17 -1
  84. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +1 -1
  85. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js +113 -75
  86. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +1 -1
  87. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +21 -10
  88. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +1 -1
  89. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js +56 -0
  90. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +1 -0
  91. package/dist-server/graphql/resolvers/index.js +5 -4
  92. package/dist-server/graphql/resolvers/index.js.map +1 -1
  93. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -1
  94. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js +8 -7
  95. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +1 -1
  96. package/dist-server/graphql/resolvers/{extra → other}/add-release-good-products.js +59 -8
  97. package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -0
  98. package/dist-server/graphql/resolvers/{extra → other}/index.js +3 -1
  99. package/dist-server/graphql/resolvers/other/index.js.map +1 -0
  100. package/dist-server/graphql/resolvers/other/page-settings.js +87 -0
  101. package/dist-server/graphql/resolvers/other/page-settings.js.map +1 -0
  102. package/dist-server/graphql/resolvers/reports/costing-report.js +4 -4
  103. package/dist-server/graphql/resolvers/reports/costing-report.js.map +1 -1
  104. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js +3 -3
  105. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +1 -1
  106. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js +36 -7
  107. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +1 -1
  108. package/dist-server/graphql/resolvers/reports/index.js +2 -1
  109. package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
  110. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +69 -30
  111. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
  112. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js +36 -11
  113. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +1 -1
  114. package/dist-server/graphql/resolvers/reports/product-label-report.js +3 -3
  115. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -1
  116. package/dist-server/graphql/resolvers/reports/release-inventory-report.js +180 -0
  117. package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +1 -0
  118. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +2 -2
  119. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -1
  120. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +1 -1
  121. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -1
  122. package/dist-server/graphql/types/dashboard/index.js +1 -0
  123. package/dist-server/graphql/types/dashboard/index.js.map +1 -1
  124. package/dist-server/graphql/types/index.js +7 -2
  125. package/dist-server/graphql/types/index.js.map +1 -1
  126. package/dist-server/graphql/types/other/index.js +19 -0
  127. package/dist-server/graphql/types/other/index.js.map +1 -0
  128. package/dist-server/graphql/types/other/page-setting.js +34 -0
  129. package/dist-server/graphql/types/other/page-setting.js.map +1 -0
  130. package/dist-server/graphql/types/reports/index.js +6 -1
  131. package/dist-server/graphql/types/reports/index.js.map +1 -1
  132. package/dist-server/graphql/types/reports/outbound-order-details-report.js +17 -1
  133. package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +1 -1
  134. package/dist-server/graphql/types/reports/release-inventory-report-list.js +12 -0
  135. package/dist-server/graphql/types/reports/release-inventory-report-list.js.map +1 -0
  136. package/dist-server/graphql/types/reports/release-inventory-report.js +27 -0
  137. package/dist-server/graphql/types/reports/release-inventory-report.js.map +1 -0
  138. package/dist-server/migrations/1568858861188-SeedSetting.js +5 -6
  139. package/dist-server/migrations/1568858861188-SeedSetting.js.map +1 -1
  140. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js +1 -1
  141. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +1 -1
  142. package/dist-server/migrations/1623381200659-SeedStoringRule.js +1 -1
  143. package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +1 -1
  144. package/dist-server/tsconfig.tsbuildinfo +1 -1
  145. package/dist-server/utils/report-query-util.js +5 -2
  146. package/dist-server/utils/report-query-util.js.map +1 -1
  147. package/helps/release-note.ko.md +8 -20
  148. package/helps/release-note.md +8 -20
  149. package/helps/release-note.ms.md +8 -20
  150. package/helps/release-note.zh.md +8 -20
  151. package/package.json +42 -42
  152. package/server/graphql/resolvers/board-setting/board-settings.ts +4 -6
  153. package/server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.ts +4 -5
  154. package/server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.ts +9 -10
  155. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.ts +4 -5
  156. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts +17 -19
  157. package/server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts +10 -8
  158. package/server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.ts +9 -9
  159. package/server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.ts +9 -9
  160. package/server/graphql/resolvers/dashboard/arrival-notices-by-status.ts +23 -14
  161. package/server/graphql/resolvers/dashboard/collection-orders-by-status.ts +4 -5
  162. package/server/graphql/resolvers/dashboard/delivery-orders-by-status.ts +4 -5
  163. package/server/graphql/resolvers/dashboard/index.ts +3 -1
  164. package/server/graphql/resolvers/dashboard/inventory-expiry-monitor.ts +18 -6
  165. package/server/graphql/resolvers/dashboard/outbound-order-by-status.ts +114 -81
  166. package/server/graphql/resolvers/dashboard/release-goods-by-status.ts +23 -14
  167. package/server/graphql/resolvers/dashboard/unit-inbounded-outbounded.ts +61 -0
  168. package/server/graphql/resolvers/index.ts +5 -4
  169. package/server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts +11 -9
  170. package/server/graphql/resolvers/opa-menu/opa-menus.ts +7 -6
  171. package/server/graphql/resolvers/{extra → other}/add-release-good-products.ts +73 -12
  172. package/server/graphql/resolvers/other/index.ts +10 -0
  173. package/server/graphql/resolvers/other/page-settings.ts +105 -0
  174. package/server/graphql/resolvers/reports/costing-report.ts +8 -10
  175. package/server/graphql/resolvers/reports/inbound-order-details-report.ts +7 -9
  176. package/server/graphql/resolvers/reports/inbound-serial-number-report.ts +41 -13
  177. package/server/graphql/resolvers/reports/index.ts +3 -1
  178. package/server/graphql/resolvers/reports/outbound-order-details-report.ts +76 -38
  179. package/server/graphql/resolvers/reports/outbound-serial-number-report.ts +42 -18
  180. package/server/graphql/resolvers/reports/product-label-report.ts +4 -6
  181. package/server/graphql/resolvers/reports/release-inventory-report.ts +201 -0
  182. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +3 -5
  183. package/server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.ts +10 -10
  184. package/server/graphql/types/dashboard/index.ts +1 -0
  185. package/server/graphql/types/index.ts +8 -2
  186. package/server/graphql/types/other/index.ts +19 -0
  187. package/server/graphql/types/other/page-setting.ts +33 -0
  188. package/server/graphql/types/reports/index.ts +6 -1
  189. package/server/graphql/types/reports/outbound-order-details-report.ts +17 -1
  190. package/server/graphql/types/reports/release-inventory-report-list.ts +8 -0
  191. package/server/graphql/types/reports/release-inventory-report.ts +23 -0
  192. package/server/migrations/1568858861188-SeedSetting.ts +4 -4
  193. package/server/migrations/1623308919899-SeedLocationRecommendSetting.ts +3 -2
  194. package/server/migrations/1623381200659-SeedStoringRule.ts +3 -2
  195. package/server/utils/report-query-util.ts +5 -2
  196. package/things-factory.config.js +4 -0
  197. package/translations/en.json +148 -27
  198. package/translations/ko.json +185 -105
  199. package/translations/ms.json +183 -98
  200. package/translations/zh.json +197 -112
  201. package/dist-server/graphql/resolvers/extra/add-release-good-products.js.map +0 -1
  202. package/dist-server/graphql/resolvers/extra/index.js.map +0 -1
  203. package/dist-server/graphql/types/extra/index.js +0 -11
  204. package/dist-server/graphql/types/extra/index.js.map +0 -1
  205. package/server/graphql/resolvers/extra/index.ts +0 -5
  206. package/server/graphql/types/extra/index.ts +0 -7
@@ -3,6 +3,7 @@ import '@things-factory/grist-ui'
3
3
  import './inventory-assign-popup'
4
4
  import './inventory-auto-assign-popup'
5
5
  import './select-operator-popup'
6
+ import './inventory-reassign-popup'
6
7
 
7
8
  import gql from 'graphql-tag'
8
9
  import { css, html } from 'lit-element'
@@ -133,11 +134,18 @@ class WorksheetBatchPicking extends localize(i18next)(PageView) {
133
134
  }
134
135
 
135
136
  if (this.activatable) {
136
- actions.push({
137
- title: i18next.t('button.activate'),
138
- action: this._activateWorksheet.bind(this),
139
- ...CommonButtonStyles.activate
140
- })
137
+ actions.push(
138
+ {
139
+ title: i18next.t('button.reassign'),
140
+ action: this._openReassignInventoryPopup.bind(this),
141
+ ...CommonButtonStyles.assignment
142
+ },
143
+ {
144
+ title: i18next.t('button.activate'),
145
+ action: this._activateWorksheet.bind(this),
146
+ ...CommonButtonStyles.activate
147
+ }
148
+ )
141
149
  }
142
150
 
143
151
  if (this.assignable) {
@@ -861,6 +869,7 @@ class WorksheetBatchPicking extends localize(i18next)(PageView) {
861
869
  description
862
870
  }
863
871
  packingType
872
+ packingSize
864
873
  inventory {
865
874
  qty
866
875
  lockedQty
@@ -1221,6 +1230,31 @@ class WorksheetBatchPicking extends localize(i18next)(PageView) {
1221
1230
  }
1222
1231
  }
1223
1232
 
1233
+ _openReassignInventoryPopup() {
1234
+ openPopup(
1235
+ html`
1236
+ <inventory-reassign-popup
1237
+ .bizplaceId=${this.targetBizpace?.id}
1238
+ .taskNo=${this._taskNo}
1239
+ .worksheetNo=${this._worksheetNo}
1240
+ @reassignment-completed="${async () => {
1241
+ await this.fetchOrderInventories()
1242
+ await this.fetchWorksheetDetails(this._worksheetNo)
1243
+
1244
+ this.updateContext()
1245
+ }}"
1246
+ ></inventory-reassign-popup>
1247
+ `,
1248
+ {
1249
+ escapable: false,
1250
+ closable: false,
1251
+ backdrop: true,
1252
+ size: 'large',
1253
+ title: i18next.t('title.reassign_inventory')
1254
+ }
1255
+ )
1256
+ }
1257
+
1224
1258
  _showToast({ type, message }) {
1225
1259
  document.dispatchEvent(
1226
1260
  new CustomEvent('notify', {
@@ -24,7 +24,8 @@ class WorksheetPacking extends localize(i18next)(PageView) {
24
24
  orderInformation: Object,
25
25
  wsdGristConfig: Object,
26
26
  worksheetDetailData: Object,
27
- _logisticsInitiated: Boolean
27
+ _logisticsInitiated: Boolean,
28
+ _isManifested: Boolean
28
29
  }
29
30
  }
30
31
 
@@ -167,7 +168,10 @@ class WorksheetPacking extends localize(i18next)(PageView) {
167
168
  <label>${i18next.t('label.ref_no_2')}</label>
168
169
  <input name="refNo2" readonly />
169
170
 
170
- <label>${i18next.t('label.shipping_provider')}</label>
171
+ <label>${i18next.t('label.ref_no_3')}</label>
172
+ <input name="refNo3" readonly />
173
+
174
+ <label>${i18next.t('label.transporter')}</label>
171
175
  <input name="shippingProvider" readonly />
172
176
 
173
177
  <label>${i18next.t('label.tracking_no')}</label>
@@ -182,6 +186,9 @@ class WorksheetPacking extends localize(i18next)(PageView) {
182
186
  key => html`<option value="${WORKSHEET_STATUS[key].value}">${WORKSHEET_STATUS[key].name}</option>`
183
187
  )}
184
188
  </select>
189
+
190
+ <input id="manifested" type="checkbox" name="manifested" ?checked="${this._isManifested}" disabled />
191
+ <label for="manifested">${i18next.t('label.manifested')}</label>
185
192
  </fieldset>
186
193
  </form>
187
194
 
@@ -307,12 +314,17 @@ class WorksheetPacking extends localize(i18next)(PageView) {
307
314
  releaseGood {
308
315
  name
309
316
  description
317
+ transporter
318
+ trackingNo
310
319
  refNo
311
320
  refNo2
312
321
  refNo3
313
322
  ownTransport
314
323
  releaseDate
315
324
  remark
325
+ manifest {
326
+ id
327
+ }
316
328
  }
317
329
  marketplaceOrder {
318
330
  name
@@ -401,6 +413,7 @@ class WorksheetPacking extends localize(i18next)(PageView) {
401
413
  this._trackingNo = worksheet.marketplaceOrder?.trackingNo
402
414
  this._refNo = worksheet?.releaseGood?.refNo
403
415
  this._roNo = worksheet?.releaseGood?.name || ''
416
+ this._isManifested = worksheet?.releaseGood?.manifest?.id ? true : false
404
417
 
405
418
  this._fillupForm({
406
419
  ...worksheet,
@@ -411,8 +424,8 @@ class WorksheetPacking extends localize(i18next)(PageView) {
411
424
  refNo3: worksheet.releaseGood.refNo3,
412
425
  ownCollection: worksheet.releaseGood.ownTransport,
413
426
  releaseDate: worksheet.releaseGood.releaseDate,
414
- shippingProvider: worksheet.marketplaceOrder?.shippingProvider || '',
415
- trackingNo: worksheet.marketplaceOrder?.trackingNo || '',
427
+ shippingProvider: worksheet.releaseGood?.transporter || '',
428
+ trackingNo: worksheet.releaseGood?.trackingNo || '',
416
429
  remark: worksheet.releaseGood.remark || ''
417
430
  })
418
431
 
@@ -3,6 +3,7 @@ import '@things-factory/grist-ui'
3
3
  import './inventory-assign-popup'
4
4
  import './inventory-auto-assign-popup'
5
5
  import './select-operator-popup'
6
+ import './inventory-reassign-popup'
6
7
 
7
8
  import gql from 'graphql-tag'
8
9
  import { css, html } from 'lit-element'
@@ -32,6 +33,7 @@ class WorksheetPicking extends localize(i18next)(PageView) {
32
33
  _worksheetNo: String,
33
34
  _worksheetStatus: String,
34
35
  _roNo: String,
36
+ _roId: String,
35
37
  _statusList: Array,
36
38
  ganNo: String,
37
39
  assignee: Object,
@@ -154,11 +156,18 @@ class WorksheetPicking extends localize(i18next)(PageView) {
154
156
  }
155
157
 
156
158
  if (this.activatable) {
157
- actions.push({
158
- title: i18next.t('button.activate'),
159
- action: this._activateWorksheet.bind(this),
160
- ...CommonButtonStyles.activate
161
- })
159
+ actions.push(
160
+ {
161
+ title: i18next.t('button.reassign'),
162
+ action: this._openReassignInventoryPopup.bind(this),
163
+ ...CommonButtonStyles.assignment
164
+ },
165
+ {
166
+ title: i18next.t('button.activate'),
167
+ action: this._activateWorksheet.bind(this),
168
+ ...CommonButtonStyles.activate
169
+ }
170
+ )
162
171
  }
163
172
 
164
173
  if (this.assignable) {
@@ -641,6 +650,7 @@ class WorksheetPicking extends localize(i18next)(PageView) {
641
650
  name
642
651
  }
643
652
  releaseGood {
653
+ id
644
654
  name
645
655
  description
646
656
  refNo
@@ -736,6 +746,7 @@ class WorksheetPicking extends localize(i18next)(PageView) {
736
746
 
737
747
  this.worksheetDetails = worksheet.worksheetDetails
738
748
  this._worksheetStatus = worksheet.status
749
+ this._roId = worksheet?.releaseGood?.id || ''
739
750
  this._roNo = worksheet?.releaseGood?.name || ''
740
751
  this.worksheetType = worksheet?.type
741
752
  this.crossDocking = worksheet?.releaseGood?.crossDocking
@@ -1152,7 +1163,10 @@ class WorksheetPicking extends localize(i18next)(PageView) {
1152
1163
  this.preWsdGristConfig.columns.splice(palletIdColumnIdx, 1, cartonIdColumnConfig)
1153
1164
  }
1154
1165
 
1155
- if (this.worksheetDetailData.records.some(e => e.batchIdRef)) {
1166
+ if (
1167
+ this.worksheetDetailData.records.some(e => e.batchIdRef) &&
1168
+ !this.preWsdGristConfig.columns.find(column => column.name === 'batchIdRef')
1169
+ ) {
1156
1170
  this.preWsdGristConfig.columns = [...this.preWsdGristConfig.columns, batchIdRefColumnConfig]
1157
1171
  }
1158
1172
 
@@ -1372,6 +1386,31 @@ class WorksheetPicking extends localize(i18next)(PageView) {
1372
1386
  })
1373
1387
  }
1374
1388
 
1389
+ _openReassignInventoryPopup() {
1390
+ openPopup(
1391
+ html`
1392
+ <inventory-reassign-popup
1393
+ .bizplaceId=${this.targetBizpace?.id}
1394
+ .roId=${this._roId}
1395
+ .worksheetNo=${this._worksheetNo}
1396
+ @reassignment-completed="${async () => {
1397
+ await this.fetchOrderInventories()
1398
+ await this.fetchWorksheetDetails(this._worksheetNo)
1399
+
1400
+ this.updateContext()
1401
+ }}"
1402
+ ></inventory-reassign-popup>
1403
+ `,
1404
+ {
1405
+ escapable: false,
1406
+ closable: false,
1407
+ backdrop: true,
1408
+ size: 'large',
1409
+ title: i18next.t('title.reassign_inventory')
1410
+ }
1411
+ )
1412
+ }
1413
+
1375
1414
  _selectOperator() {
1376
1415
  openPopup(
1377
1416
  html`
@@ -57,6 +57,10 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
57
57
  accept: ['preview'],
58
58
  content: this
59
59
  },
60
+ exportable: {
61
+ name: i18next.t('title.inbound_serial_number_report'),
62
+ data: this._exportableData.bind(this)
63
+ },
60
64
  help: 'operato-wms/report/inbound-serial-number-report'
61
65
  }
62
66
  }
@@ -137,22 +141,54 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
137
141
  let date = new Date()
138
142
  date.setMonth(date.getMonth() - 1)
139
143
  return date.toISOString().split('T')[0]
140
- })()
144
+ })(),
145
+ max: new Date().toISOString().split('T')[0]
141
146
  },
142
147
  value: new Date().toISOString().split('T')[0],
143
148
  handlers: { change: this._submit.bind(this) }
149
+ },
150
+ {
151
+ label: i18next.t('field.order_no'),
152
+ name: 'orderNo',
153
+ type: 'text',
154
+ props: { searchOper: 'custom' }
155
+ },
156
+ {
157
+ label: i18next.t('field.ref_no'),
158
+ name: 'ref',
159
+ type: 'string',
160
+ props: { searchOper: 'in' }
161
+ },
162
+ {
163
+ label: i18next.t('field.lot_id'),
164
+ name: 'palletId',
165
+ type: 'text',
166
+ props: { searchOper: 'i_like' }
167
+ },
168
+ {
169
+ label: i18next.t('field.carton_id'),
170
+ name: 'cartonId',
171
+ type: 'text',
172
+ props: { searchOper: 'i_like' }
173
+ },
174
+ {
175
+ label: i18next.t('field.product_info'),
176
+ name: 'product',
177
+ type: 'string',
178
+ props: { searchOper: 'in' }
179
+ },
180
+ {
181
+ label: i18next.t('field.serial_number'),
182
+ name: 'serialNumber',
183
+ type: 'text',
184
+ props: { searchOper: 'eq' }
144
185
  }
145
186
  ]
146
187
  }
147
188
 
148
189
  get reportConfig() {
149
190
  let columns = [
150
- {
151
- type: 'number',
152
- name: 'no',
153
- header: i18next.t('field.no'),
154
- width: 50
155
- },
191
+ { type: 'gutter', gutterName: 'sequence' },
156
192
  {
157
193
  type: 'string',
158
194
  name: 'bizplace|name',
@@ -246,7 +282,6 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
246
282
  ]
247
283
  let list = {
248
284
  fields: [
249
- 'no',
250
285
  'bizplace|name',
251
286
  'orderNo',
252
287
  'refNo1',
@@ -279,6 +314,7 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
279
314
 
280
315
  async pageInitialized() {
281
316
  this._gristData = { total: 0, records: [] }
317
+ this._products = []
282
318
  this._partners = [...(await this._fetchPartners())]
283
319
 
284
320
  this._searchFields = this.searchFields
@@ -320,7 +356,6 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
320
356
  query inboundSerialNumberReport($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
321
357
  inboundSerialNumberReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
322
358
  items {
323
- no
324
359
  bizplace {
325
360
  name
326
361
  description
@@ -369,6 +404,42 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
369
404
  }
370
405
  }
371
406
 
407
+ async _exportableData() {
408
+ try {
409
+ var headerSetting = [
410
+ { header: i18next.t('field.company'), key: 'bizplace|name', width: 25, type: 'string' },
411
+ { header: i18next.t('field.order_no'), key: 'orderNo', width: 25, type: 'string' },
412
+ { header: i18next.t('field.ref_no'), key: 'refNo1', width: 25, type: 'string' },
413
+ { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
414
+ { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
415
+ { header: i18next.t('field.lot_id'), key: 'palletId', width: 25, type: 'string' },
416
+ { header: i18next.t('field.carton_id'), key: 'cartonId', width: 25, type: 'string' },
417
+ { header: i18next.t('field.sku'), key: 'product|sku', width: 25, type: 'string' },
418
+ { header: i18next.t('field.brand_sku'), key: 'product|brandSku', width: 25, type: 'string' },
419
+ { header: i18next.t('field.product_name'), key: 'product|name', width: 80, type: 'string' },
420
+ { header: i18next.t('field.product_description'), key: 'product|description', width: 25, type: 'string' },
421
+ { header: i18next.t('field.product_type'), key: 'product|type', width: 25, type: 'string' },
422
+ { header: i18next.t('field.volume'), key: 'product|volume', width: 25, type: 'string' },
423
+ { header: i18next.t('field.serial_number'), key: 'serialNumber', width: 25, type: 'string' },
424
+ { header: i18next.t('field.etd'), key: 'etd', width: 25, type: 'datetime' }
425
+ ]
426
+
427
+ var exportData = {
428
+ header: [...headerSetting],
429
+ data: (await this.fetchHandler({ page: 1, limit: 9999999 })).records.map(itm => {
430
+ return {
431
+ ...itm,
432
+ etd: itm.etd ? new Date(parseInt(itm.etd)).toLocaleString() : ''
433
+ }
434
+ })
435
+ }
436
+
437
+ return exportData
438
+ } catch (e) {
439
+ this._showToast(e)
440
+ }
441
+ }
442
+
372
443
  async _fetchPartners() {
373
444
  const filters = []
374
445
  const response = await client.query({
@@ -423,11 +494,17 @@ class InboundSerialNumberReport extends connect(store)(localize(i18next)(PageVie
423
494
  if (this._toDateInput.value < fromDate) this._toDateInput.value = fromDate
424
495
 
425
496
  let min = new Date(fromDate)
497
+ let max = new Date(fromDate)
426
498
  let today = new Date()
427
499
  today.setHours(0, 0, 0, 0)
500
+ max.setMonth(max.getMonth() + 1)
501
+ max.setDate(max.getDate() - 1)
428
502
 
429
503
  min = min.toISOString().split('T')[0]
504
+ max = max.toISOString().split('T')[0]
430
505
 
506
+ this._toDateInput.value = max
507
+ this._toDateInput.max = max
431
508
  this._toDateInput.min = min
432
509
  this._submit()
433
510
  }
@@ -159,6 +159,7 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
159
159
  rows: {
160
160
  selectable: false,
161
161
  groups: [
162
+ { column: 'product|sku' },
162
163
  { column: 'product|name' },
163
164
  { column: 'product|type' },
164
165
  { column: 'packingType', title: 'Sub Total' },
@@ -168,6 +169,14 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
168
169
  totals: ['qty', 'uomValue']
169
170
  },
170
171
  columns: [
172
+ {
173
+ type: 'string',
174
+ name: 'product|sku',
175
+ header: i18next.t('field.sku'),
176
+ sortable: false,
177
+ imex: { header: i18next.t('field.sku'), key: 'product|sku', width: 75, type: 'string' },
178
+ width: 400
179
+ },
171
180
  {
172
181
  type: 'string',
173
182
  name: 'product|name',
@@ -282,6 +291,7 @@ class InventoryReport extends connect(store)(localize(i18next)(PageView)) {
282
291
  description
283
292
  }
284
293
  product {
294
+ sku
285
295
  name
286
296
  description
287
297
  type
@@ -47,7 +47,6 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
47
47
  _searchFields: Object,
48
48
  _config: Object,
49
49
  _partners: Object,
50
- _productType: Object,
51
50
  _gristData: Object,
52
51
  _byPallet: Boolean,
53
52
  data: Object
@@ -175,15 +174,7 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
175
174
  label: i18next.t('field.product_type'),
176
175
  name: 'productType',
177
176
  type: 'select',
178
- options: [
179
- { value: '' },
180
- ...this._productType.map(type => {
181
- return {
182
- name: type.name,
183
- value: type.name
184
- }
185
- })
186
- ],
177
+ options: [{ value: '' }],
187
178
  props: { searchOper: 'eq' }
188
179
  },
189
180
  {
@@ -322,7 +313,6 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
322
313
  this._gristData = { total: 0, totalWithOpeningBalance: 0, records: [] }
323
314
  this._products = []
324
315
  this._partners = [...(await this._fetchPartners())]
325
- this._productType = []
326
316
 
327
317
  this._searchFields = this.searchFields
328
318
  this._config = this.reportConfig
@@ -468,25 +458,44 @@ class InventorySummaryReport extends connect(store)(localize(i18next)(PageView))
468
458
 
469
459
  if (this._toDateInput.value < fromDate) this._toDateInput.value = fromDate
470
460
 
471
- let min = new Date(fromDate)
472
- let today = new Date()
473
- today.setHours(0, 0, 0, 0)
474
-
475
- min = min.toISOString().split('T')[0]
476
-
461
+ let min = new Date(fromDate).toISOString().split('T')[0]
477
462
  this._toDateInput.min = min
478
463
  this._submit()
479
464
  }
480
465
 
481
466
  async _companyChanged(e) {
482
- this._productType = !this._bizplaceSelector.value
467
+ const _productType = !this._bizplaceSelector.value
483
468
  ? []
484
469
  : await getPartnerCodeByName(
485
470
  'PRODUCT_TYPES',
486
471
  this._partners.find(p => p.id == this._bizplaceSelector.value)?.company?.domainId || ''
487
472
  )
488
473
 
489
- this._searchFields = [...this.searchFields]
474
+ // update searchFields with the latest productTypes and toDate's min props
475
+ this._searchFields = this._searchFields.map(field => {
476
+ switch (field.name) {
477
+ case 'productType':
478
+ field.options = [
479
+ { value: '' },
480
+ ..._productType.map(type => {
481
+ return {
482
+ name: type.name,
483
+ value: type.name
484
+ }
485
+ })
486
+ ]
487
+ break
488
+
489
+ case 'toDate':
490
+ field.props = {
491
+ ...field.props,
492
+ min: this._toDateInput.min
493
+ }
494
+ break
495
+ }
496
+
497
+ return field
498
+ })
490
499
  }
491
500
 
492
501
  _submit(e) {