@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,13 +3,27 @@ import '@things-factory/grist-ui'
3
3
  import '../inventory/inventory-by-product-detail'
4
4
 
5
5
  import gql from 'graphql-tag'
6
- import { css, html } from 'lit-element'
6
+ import {
7
+ css,
8
+ html
9
+ } from 'lit-element'
7
10
  import { connect } from 'pwa-helpers/connect-mixin'
8
11
 
9
12
  import { getCodeByName } from '@things-factory/code-base'
10
- import { i18next, localize } from '@things-factory/i18n-base'
11
- import { client, gqlContext, PageView, store } from '@things-factory/shell'
12
- import { flattenObject, isMobileDevice } from '@things-factory/utils'
13
+ import {
14
+ i18next,
15
+ localize
16
+ } from '@things-factory/i18n-base'
17
+ import {
18
+ client,
19
+ gqlContext,
20
+ PageView,
21
+ store
22
+ } from '@things-factory/shell'
23
+ import {
24
+ flattenObject,
25
+ isMobileDevice
26
+ } from '@things-factory/utils'
13
27
 
14
28
  class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageView)) {
15
29
  static get styles() {
@@ -211,10 +225,10 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
211
225
  width: 200
212
226
  },
213
227
  {
214
- type: 'datetime',
228
+ type: 'string',
215
229
  name: 'doDeliveryDate',
216
230
  header: i18next.t('field.do_delivery_date'),
217
- width: 170
231
+ width: 200
218
232
  },
219
233
  {
220
234
  type: 'string',
@@ -222,6 +236,12 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
222
236
  header: i18next.t('field.delivery_address'),
223
237
  width: 300
224
238
  },
239
+ {
240
+ type: 'string',
241
+ name: 'manifestNo',
242
+ header: i18next.t('field.manifest_no'),
243
+ width: 200
244
+ },
225
245
  {
226
246
  type: 'string',
227
247
  name: 'refNo1',
@@ -240,6 +260,54 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
240
260
  header: i18next.t('field.ref_no_3'),
241
261
  width: 150
242
262
  },
263
+ {
264
+ type: 'boolean',
265
+ name: 'exportOption',
266
+ header: i18next.t('field.export'),
267
+ record: { align: 'center' },
268
+ width: 100
269
+ },
270
+ {
271
+ type: 'string',
272
+ name: 'containerNo',
273
+ header: i18next.t('field.container_no'),
274
+ record: { align: 'center' },
275
+ width: 120
276
+ },
277
+ {
278
+ type: 'string',
279
+ name: 'containerSize',
280
+ header: i18next.t('field.container_size'),
281
+ record: { align: 'center' },
282
+ width: 120
283
+ },
284
+ {
285
+ type: 'string',
286
+ name: 'transportOption',
287
+ header: i18next.t('field.transport_option'),
288
+ record: { align: 'center' },
289
+ width: 120
290
+ },
291
+ {
292
+ type: 'string',
293
+ name: 'vehicleNo',
294
+ header: i18next.t('field.vehicle_no'),
295
+ record: { align: 'center' },
296
+ width: 120
297
+ },
298
+ {
299
+ type: 'string',
300
+ name: 'driverName',
301
+ header: i18next.t('field.driver_name'),
302
+ record: { align: 'center' },
303
+ width: 120
304
+ },
305
+ {
306
+ type: 'float',
307
+ name: 'palletQty',
308
+ header: i18next.t('field.pallet_qty'),
309
+ width: 120
310
+ },
243
311
  {
244
312
  type: 'string',
245
313
  name: 'status',
@@ -252,6 +320,18 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
252
320
  header: i18next.t('field.order_created_at'),
253
321
  width: 170
254
322
  },
323
+ {
324
+ type: 'string',
325
+ name: 'acceptedBy',
326
+ header: i18next.t('field.accepted_by'),
327
+ width: 170
328
+ },
329
+ {
330
+ type: 'datetime',
331
+ name: 'acceptedAt',
332
+ header: i18next.t('field.accepted_at'),
333
+ width: 170
334
+ },
255
335
  {
256
336
  type: 'datetime',
257
337
  name: 'pickingStart',
@@ -261,19 +341,43 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
261
341
  {
262
342
  type: 'datetime',
263
343
  name: 'pickingComplete',
264
- header: i18next.t('field.picking_complete'),
344
+ header: i18next.t('field.picking_end'),
265
345
  width: 170
266
346
  },
267
347
  {
268
- type: 'string',
269
- name: 'acceptedBy',
270
- header: i18next.t('field.accepted_by'),
348
+ type: 'datetime',
349
+ name: 'packingStart',
350
+ header: i18next.t('field.packing_start'),
271
351
  width: 170
272
352
  },
273
353
  {
274
354
  type: 'datetime',
275
- name: 'acceptedAt',
276
- header: i18next.t('field.accepted_at'),
355
+ name: 'packingComplete',
356
+ header: i18next.t('field.packing_end'),
357
+ width: 170
358
+ },
359
+ {
360
+ type: 'datetime',
361
+ name: 'sortingStart',
362
+ header: i18next.t('field.sorting_start'),
363
+ width: 170
364
+ },
365
+ {
366
+ type: 'datetime',
367
+ name: 'sortingComplete',
368
+ header: i18next.t('field.sorting_end'),
369
+ width: 170
370
+ },
371
+ {
372
+ type: 'datetime',
373
+ name: 'loadingStart',
374
+ header: i18next.t('field.loading_start'),
375
+ width: 170
376
+ },
377
+ {
378
+ type: 'datetime',
379
+ name: 'loadingComplete',
380
+ header: i18next.t('field.loading_end'),
277
381
  width: 170
278
382
  },
279
383
  {
@@ -330,24 +434,6 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
330
434
  header: i18next.t('field.uom'),
331
435
  width: 100
332
436
  },
333
- {
334
- type: 'string',
335
- name: 'unitCost',
336
- header: i18next.t('field.unit_cost'),
337
- width: 100
338
- },
339
- {
340
- type: 'float',
341
- name: 'returnToLocationQty',
342
- header: i18next.t('field.return_qty'),
343
- width: 120
344
- },
345
- {
346
- type: 'float',
347
- name: 'returnToLocationUomValue',
348
- header: i18next.t('field.return_uom_value'),
349
- width: 120
350
- },
351
437
  {
352
438
  type: 'float',
353
439
  name: 'unitVolume',
@@ -390,6 +476,18 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
390
476
  header: i18next.t('field.weight_unit'),
391
477
  width: 100
392
478
  },
479
+ {
480
+ type: 'float',
481
+ name: 'returnToLocationQty',
482
+ header: i18next.t('field.return_qty'),
483
+ width: 120
484
+ },
485
+ {
486
+ type: 'float',
487
+ name: 'returnToLocationUomValue',
488
+ header: i18next.t('field.return_uom'),
489
+ width: 120
490
+ },
393
491
  {
394
492
  type: 'string',
395
493
  name: 'palletId',
@@ -474,10 +572,22 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
474
572
  header: i18next.t('field.loaded_at'),
475
573
  width: 170
476
574
  },
575
+ {
576
+ type: 'string',
577
+ name: 'manifestedBy',
578
+ header: i18next.t('field.manifested_by'),
579
+ width: 170
580
+ },
477
581
  {
478
582
  type: 'datetime',
479
- name: 'shippedAt',
480
- header: i18next.t('field.shipped_at'),
583
+ name: 'manifestedAt',
584
+ header: i18next.t('field.manifested_at'),
585
+ width: 170
586
+ },
587
+ {
588
+ type: 'datetime',
589
+ name: 'dispatchedAt',
590
+ header: i18next.t('field.dispatched_at'),
481
591
  width: 170
482
592
  }
483
593
  ]
@@ -493,9 +603,17 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
493
603
  'refNo2',
494
604
  'refNo3',
495
605
  'status',
606
+ 'exportOption',
607
+ 'containerNo',
608
+ 'containerSize',
609
+ 'palletQty',
496
610
  'orderCreatedAt',
497
611
  'pickingStart',
498
612
  'pickingComplete',
613
+ 'packingStart',
614
+ 'packingComplete',
615
+ 'loadingStart',
616
+ 'loadingComplete',
499
617
  'acceptedBy',
500
618
  'acceptedAt',
501
619
  'product|sku',
@@ -507,7 +625,6 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
507
625
  'qty',
508
626
  'uomValue',
509
627
  'uom',
510
- 'unitCost',
511
628
  'returnToLocationQty',
512
629
  'returnToLocationUomValue',
513
630
  'unitVolume',
@@ -531,7 +648,9 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
531
648
  'checkedRemarkAt',
532
649
  'loadedAt',
533
650
  'loadedBy',
534
- 'shippedAt'
651
+ 'manifestedAt',
652
+ 'manifestedBy',
653
+ 'dispatchedAt'
535
654
  ]
536
655
  }
537
656
 
@@ -605,17 +724,28 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
605
724
  doNo
606
725
  doDeliveryDate
607
726
  deliveryAddress
727
+ manifestNo
608
728
  roNo
609
729
  roType
610
730
  status
611
731
  refNo1
612
732
  refNo2
613
733
  refNo3
734
+ containerSize
735
+ transportOption
736
+ vehicleNo
737
+ driverName
614
738
  acceptedBy
615
739
  acceptedAt
616
740
  orderCreatedAt
617
741
  pickingStart
618
742
  pickingComplete
743
+ packingStart
744
+ packingComplete
745
+ sortingStart
746
+ sortingComplete
747
+ loadingStart
748
+ loadingComplete
619
749
  orderLineItem
620
750
  product {
621
751
  sku
@@ -630,7 +760,6 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
630
760
  returnToLocationQty
631
761
  returnToLocationUomValue
632
762
  uom
633
- unitCost
634
763
  unitVolume
635
764
  totalVolume
636
765
  unitNettWeight
@@ -652,7 +781,13 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
652
781
  checkedRemarkBy
653
782
  loadedAt
654
783
  loadedBy
655
- shippedAt
784
+ dispatchedAt
785
+ exportOption
786
+ containerNo
787
+ palletQty
788
+ manifestedAt
789
+ manifestedBy
790
+ dispatchedAt
656
791
  }
657
792
  total
658
793
  }
@@ -667,8 +802,8 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
667
802
  records:
668
803
  response.data.outboundOrderDetailsReport.items.map(itm => {
669
804
  itm = {
670
- ...itm,
671
- unitCost: parseFloat(itm.unitCost ? itm.unitCost : 0).toFixed(2)
805
+ ...itm
806
+ // unitCost: parseFloat(itm.unitCost ? itm.unitCost : 0).toFixed(2)
672
807
  }
673
808
  return flattenObject({ ...itm, bizplace: { name: `${itm.bizplace.name} ${itm.bizplace.description}` } })
674
809
  }) || []
@@ -765,15 +900,29 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
765
900
  { header: i18next.t('field.do_no'), key: 'doNo', width: 30, type: 'string' },
766
901
  { header: i18next.t('field.do_delivery_date'), key: 'doDeliveryDate', width: 30, type: 'string' },
767
902
  { header: i18next.t('field.delivery_address'), key: 'deliveryAddress', width: 40, type: 'string' },
903
+ { header: i18next.t('field.manifest_no'), key: 'manifestNo', width: 30, type: 'string' },
768
904
  { header: i18next.t('field.ref_no'), key: 'refNo1', width: 60, type: 'string' },
769
905
  { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 60, type: 'string' },
770
906
  { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 60, type: 'string' },
907
+ { header: i18next.t('field.export'), key: 'exportOption', width: 20, type: 'string' },
908
+ { header: i18next.t('field.container_no'), key: 'containerNo', width: 30, type: 'string' },
909
+ { header: i18next.t('field.container_size'), key: 'containerSize', width: 30, type: 'string' },
910
+ { header: i18next.t('field.transport_option'), key: 'transportOption', width: 30, type: 'string' },
911
+ { header: i18next.t('field.vehicle_no'), key: 'vehicleNo', width: 30, type: 'string' },
912
+ { header: i18next.t('field.driver_name'), key: 'driverName', width: 30, type: 'string' },
913
+ { header: i18next.t('field.pallet_qty'), key: 'palletQty', width: 30, type: 'string' },
771
914
  { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
772
915
  { header: i18next.t('field.order_created_at'), key: 'orderCreatedAt', width: 30, type: 'string' },
773
- { header: i18next.t('field.picking_start'), key: 'pickingStart', width: 30, type: 'string' },
774
- { header: i18next.t('field.picking_complete'), key: 'pickingComplete', width: 30, type: 'string' },
775
916
  { header: i18next.t('field.accepted_by'), key: 'acceptedBy', width: 30, type: 'string' },
776
917
  { header: i18next.t('field.accepted_at'), key: 'acceptedAt', width: 30, type: 'string' },
918
+ { header: i18next.t('field.picking_start'), key: 'pickingStart', width: 30, type: 'string' },
919
+ { header: i18next.t('field.picking_end'), key: 'pickingComplete', width: 30, type: 'string' },
920
+ { header: i18next.t('field.packing_start'), key: 'packingStart', width: 30, type: 'string' },
921
+ { header: i18next.t('field.packing_end'), key: 'packingComplete', width: 30, type: 'string' },
922
+ { header: i18next.t('field.sorting_start'), key: 'sortingStart', width: 30, type: 'string' },
923
+ { header: i18next.t('field.sorting_end'), key: 'sortingComplete', width: 30, type: 'string' },
924
+ { header: i18next.t('field.loading_start'), key: 'loadingStart', width: 30, type: 'string' },
925
+ { header: i18next.t('field.loading_end'), key: 'loadingComplete', width: 30, type: 'string' },
777
926
  { header: i18next.t('field.sku'), key: 'product|sku', width: 25, type: 'string' },
778
927
  { header: i18next.t('field.product_name'), key: 'product|name', width: 50, type: 'string' },
779
928
  { header: i18next.t('field.product_description'), key: 'product|description', width: 50, type: 'string' },
@@ -790,6 +939,8 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
790
939
  { header: i18next.t('field.unit_gross_weight'), key: 'unitGrossWeight', width: 15, type: 'string' },
791
940
  { header: i18next.t('field.total_unit_gross_weight'), key: 'totalUnitGrossWeight', width: 15, type: 'string' },
792
941
  { header: i18next.t('field.weight_unit'), key: 'weightUnit', width: 15, type: 'string' },
942
+ { header: i18next.t('field.return_qty'), key: 'returnToLocationQty', width: 15, type: 'string' },
943
+ { header: i18next.t('field.return_uom'), key: 'returnToLocationUomValue', width: 15, type: 'string' },
793
944
  { header: i18next.t('field.lot_id'), key: 'palletId', width: 25, type: 'string' },
794
945
  { header: i18next.t('field.carton_id'), key: 'cartonId', width: 25, type: 'string' },
795
946
  { header: i18next.t('field.batch_id'), key: 'batchId', width: 25, type: 'string' },
@@ -804,7 +955,9 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
804
955
  { header: i18next.t('field.remark_checked_at'), key: 'checkedRemarkAt', width: 15, type: 'string' },
805
956
  { header: i18next.t('field.loaded_by'), key: 'loadedBy', width: 15, type: 'string' },
806
957
  { header: i18next.t('field.loaded_at'), key: 'loadedAt', width: 15, type: 'string' },
807
- { header: i18next.t('field.shipped_at'), key: 'shippedAt', width: 15, type: 'string' }
958
+ { header: i18next.t('field.manifested_by'), key: 'manifestedBy', width: 15, type: 'string' },
959
+ { header: i18next.t('field.manifested_at'), key: 'manifestedAt', width: 15, type: 'string' },
960
+ { header: i18next.t('field.dispatched_at'), key: 'dispatchedAt', width: 15, type: 'string' }
808
961
  ]
809
962
 
810
963
  var exportData = {
@@ -815,13 +968,21 @@ class OutboundOrderDetailsReport extends connect(store)(localize(i18next)(PageVi
815
968
  orderCreatedAt: itm.orderCreatedAt ? new Date(parseInt(itm.orderCreatedAt)).toLocaleString() : '',
816
969
  pickingStart: itm.pickingStart ? new Date(parseInt(itm.pickingStart)).toLocaleString() : '',
817
970
  pickingComplete: itm.pickingComplete ? new Date(parseInt(itm.pickingComplete)).toLocaleString() : '',
971
+ packingStart: itm.packingStart ? new Date(parseInt(itm.packingStart)).toLocaleString() : '',
972
+ packingComplete: itm.packingComplete ? new Date(parseInt(itm.packingComplete)).toLocaleString() : '',
973
+ sortingStart: itm.sortingStart ? new Date(parseInt(itm.sortingStart)).toLocaleString() : '',
974
+ sortingComplete: itm.sortingComplete ? new Date(parseInt(itm.sortingComplete)).toLocaleString() : '',
975
+ loadingStart: itm.loadingStart ? new Date(parseInt(itm.loadingStart)).toLocaleString() : '',
976
+ loadingComplete: itm.loadingComplete ? new Date(parseInt(itm.loadingComplete)).toLocaleString() : '',
818
977
  acceptedAt: itm.acceptedAt ? new Date(parseInt(itm.acceptedAt)).toLocaleString() : '',
819
978
  pickedAt: itm.pickedAt ? new Date(parseInt(itm.pickedAt)).toLocaleString() : '',
820
979
  packedAt: itm.packedAt ? new Date(parseInt(itm.packedAt)).toLocaleString() : '',
821
980
  loadedAt: itm.loadedAt ? new Date(parseInt(itm.loadedAt)).toLocaleString() : '',
822
- shippedAt: itm.shippedAt ? new Date(parseInt(itm.shippedAt)).toLocaleString() : '',
981
+ manifestedAt: itm.manifestedAt ? new Date(parseInt(itm.manifestedAt)).toLocaleString() : '',
982
+ dispatchedAt: itm.dispatchedAt ? new Date(parseInt(itm.dispatchedAt)).toLocaleString() : '',
823
983
  expirationDate: itm.expirationDate ? new Date(parseInt(itm.expirationDate)).toLocaleString() : '',
824
- manufactureDate: itm.manufactureDate ? new Date(parseInt(itm.manufactureDate)).toLocaleString() : ''
984
+ manufactureDate: itm.manufactureDate ? new Date(parseInt(itm.manufactureDate)).toLocaleString() : '',
985
+ checkedRemarkAt: itm.checkedRemarkAt ? new Date(parseInt(itm.checkedRemarkAt)).toLocaleString() : ''
825
986
  }
826
987
  })
827
988
  }
@@ -57,6 +57,10 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
57
57
  accept: ['preview'],
58
58
  content: this
59
59
  },
60
+ exportable: {
61
+ name: i18next.t('title.outbound_serial_number_report'),
62
+ data: this._exportableData.bind(this)
63
+ },
60
64
  help: 'operato-wms/report/outbound-serial-number-report'
61
65
  }
62
66
  }
@@ -137,22 +141,54 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
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: 'i_like' }
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',
@@ -258,7 +294,6 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
258
294
  ]
259
295
  let list = {
260
296
  fields: [
261
- 'no',
262
297
  'bizplace|name',
263
298
  'orderNo',
264
299
  'refNo1',
@@ -333,7 +368,6 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
333
368
  query outboundSerialNumberReport($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
334
369
  outboundSerialNumberReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
335
370
  items {
336
- no
337
371
  bizplace {
338
372
  name
339
373
  description
@@ -384,6 +418,44 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
384
418
  }
385
419
  }
386
420
 
421
+ async _exportableData() {
422
+ try {
423
+ var headerSetting = [
424
+ { header: i18next.t('field.company'), key: 'bizplace|name', width: 25, type: 'string' },
425
+ { header: i18next.t('field.order_no'), key: 'orderNo', width: 25, type: 'string' },
426
+ { header: i18next.t('field.ref_no'), key: 'refNo1', width: 25, type: 'string' },
427
+ { header: i18next.t('field.ref_no_2'), key: 'refNo2', width: 25, type: 'string' },
428
+ { header: i18next.t('field.ref_no_3'), key: 'refNo3', width: 25, type: 'string' },
429
+ { header: i18next.t('field.attention_to'), key: 'attentionTo', width: 25, type: 'string' },
430
+ { header: i18next.t('field.full_delivery_address'), key: 'fullDeliveryAddress', width: 80, type: 'string' },
431
+ { header: i18next.t('field.lot_id'), key: 'palletId', width: 25, type: 'string' },
432
+ { header: i18next.t('field.carton_id'), key: 'cartonId', width: 25, type: 'string' },
433
+ { header: i18next.t('field.sku'), key: 'product|sku', width: 25, type: 'string' },
434
+ { header: i18next.t('field.brand_sku'), key: 'product|brandSku', width: 25, type: 'string' },
435
+ { header: i18next.t('field.product_name'), key: 'product|name', width: 80, type: 'string' },
436
+ { header: i18next.t('field.product_description'), key: 'product|description', width: 25, type: 'string' },
437
+ { header: i18next.t('field.product_type'), key: 'product|type', width: 25, type: 'string' },
438
+ { header: i18next.t('field.volume'), key: 'product|volume', width: 25, type: 'string' },
439
+ { header: i18next.t('field.serial_number'), key: 'serialNumber', width: 25, type: 'string' },
440
+ { header: i18next.t('field.etd'), key: 'etd', width: 25, type: 'datetime' }
441
+ ]
442
+
443
+ var exportData = {
444
+ header: [...headerSetting],
445
+ data: (await this.fetchHandler({ page: 1, limit: 9999999 })).records.map(itm => {
446
+ return {
447
+ ...itm,
448
+ etd: itm.etd ? new Date(parseInt(itm.etd)).toLocaleString() : ''
449
+ }
450
+ })
451
+ }
452
+
453
+ return exportData
454
+ } catch (e) {
455
+ this._showToast(e)
456
+ }
457
+ }
458
+
387
459
  async _fetchPartners() {
388
460
  const filters = []
389
461
  const response = await client.query({
@@ -438,11 +510,17 @@ class OutboundSerialNumberReport extends connect(store)(localize(i18next)(PageVi
438
510
  if (this._toDateInput.value < fromDate) this._toDateInput.value = fromDate
439
511
 
440
512
  let min = new Date(fromDate)
513
+ let max = new Date(fromDate)
441
514
  let today = new Date()
442
515
  today.setHours(0, 0, 0, 0)
516
+ max.setMonth(max.getMonth() + 1)
517
+ max.setDate(max.getDate() - 1)
443
518
 
444
519
  min = min.toISOString().split('T')[0]
520
+ max = max.toISOString().split('T')[0]
445
521
 
522
+ this._toDateInput.value = max
523
+ this._toDateInput.max = max
446
524
  this._toDateInput.min = min
447
525
  this._submit()
448
526
  }