@things-factory/worksheet-base 5.0.0-alpha.5 → 5.0.0-alpha.52

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 (243) hide show
  1. package/dist-server/constants/template.js +1 -0
  2. package/dist-server/constants/template.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/sellercraft-controller.js +24 -10
  4. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  5. package/dist-server/controllers/inbound/putaway-worksheet-controller.js +22 -13
  6. package/dist-server/controllers/inbound/putaway-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +309 -4
  8. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/index.js +2 -0
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/controllers/outbound/loading-worksheet-controller.js +56 -9
  12. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/outbound/packing-worksheet-controller.js +172 -7
  14. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/outbound/picking-worksheet-controller.js +500 -18
  16. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/outbound/returning-worksheet-controller.js +11 -1
  18. package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
  19. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +215 -12
  20. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  21. package/dist-server/controllers/render-fm-grn.js +229 -0
  22. package/dist-server/controllers/render-fm-grn.js.map +1 -0
  23. package/dist-server/controllers/render-grn.js +77 -45
  24. package/dist-server/controllers/render-grn.js.map +1 -1
  25. package/dist-server/controllers/render-invoices.js +103 -65
  26. package/dist-server/controllers/render-invoices.js.map +1 -1
  27. package/dist-server/controllers/render-manifest.js +12 -5
  28. package/dist-server/controllers/render-manifest.js.map +1 -1
  29. package/dist-server/controllers/render-orientage-do.js.map +1 -1
  30. package/dist-server/controllers/render-orientage-grn.js +1 -0
  31. package/dist-server/controllers/render-orientage-grn.js.map +1 -1
  32. package/dist-server/controllers/render-po.js +147 -0
  33. package/dist-server/controllers/render-po.js.map +1 -0
  34. package/dist-server/controllers/render-ro-do.js +65 -1
  35. package/dist-server/controllers/render-ro-do.js.map +1 -1
  36. package/dist-server/controllers/worksheet-controller.js +23 -1
  37. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  38. package/dist-server/entities/index.js +2 -1
  39. package/dist-server/entities/index.js.map +1 -1
  40. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +174 -0
  41. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -0
  42. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +14 -1
  43. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  44. package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +17 -0
  45. package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -0
  46. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +12 -4
  47. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  48. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +30 -1
  49. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +27 -23
  51. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
  52. package/dist-server/graphql/resolvers/worksheet/index.js +2 -1
  53. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  54. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +3 -0
  55. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  56. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +48 -2
  57. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  58. package/dist-server/graphql/resolvers/worksheet/loading/loading.js +3 -10
  59. package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
  60. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +55 -21
  61. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
  62. package/dist-server/graphql/resolvers/worksheet/packing/index.js +2 -1
  63. package/dist-server/graphql/resolvers/worksheet/packing/index.js.map +1 -1
  64. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +4 -4
  65. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  66. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +4 -4
  67. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  68. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js +15 -0
  69. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -0
  70. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +153 -132
  71. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  72. package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +2 -5
  73. package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js.map +1 -1
  74. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +13 -10
  75. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
  76. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +1 -1
  77. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  78. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +14 -25
  79. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  80. package/dist-server/graphql/resolvers/worksheet/picking/index.js +3 -1
  81. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  82. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +49 -58
  83. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
  84. package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
  85. package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
  86. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -4
  87. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  88. package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js +15 -0
  89. package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -0
  90. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js +15 -0
  91. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -0
  92. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +10 -1
  93. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  94. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +36 -0
  95. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  96. package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +11 -6
  97. package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
  98. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
  99. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
  100. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
  101. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
  102. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +6 -0
  103. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
  104. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +3 -2
  105. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  106. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +0 -21
  107. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
  108. package/dist-server/graphql/resolvers/worksheet/unloading/index.js +3 -1
  109. package/dist-server/graphql/resolvers/worksheet/unloading/index.js.map +1 -1
  110. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js +15 -0
  111. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -0
  112. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js +15 -0
  113. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -0
  114. package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
  115. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +3 -1
  116. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
  117. package/dist-server/graphql/resolvers/worksheet/worksheet.js +2 -0
  118. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  119. package/dist-server/graphql/resolvers/worksheet/worksheets.js +45 -5
  120. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  121. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +13 -8
  122. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  123. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +19 -4
  124. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
  125. package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +24 -34
  126. package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
  127. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +12 -3
  128. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
  129. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +10 -2
  130. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
  131. package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +2 -5
  132. package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
  133. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js +11 -0
  134. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js.map +1 -0
  135. package/dist-server/graphql/types/worksheet/index.js +52 -11
  136. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  137. package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +1 -0
  138. package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
  139. package/dist-server/graphql/types/worksheet/picking-assignment-status.js +2 -2
  140. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +8 -3
  141. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
  142. package/dist-server/graphql/types/worksheet/worksheet-info.js +3 -0
  143. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  144. package/dist-server/graphql/types/worksheet/worksheet-patch.js +1 -0
  145. package/dist-server/graphql/types/worksheet/worksheet-patch.js.map +1 -1
  146. package/dist-server/graphql/types/worksheet/worksheet.js +1 -0
  147. package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
  148. package/dist-server/graphql/types/worksheet-detail/index.js +0 -2
  149. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  150. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +5 -2
  151. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
  152. package/dist-server/graphql/types/worksheet-detail/worksheet-detail-patch.js +1 -1
  153. package/dist-server/index.js +5 -0
  154. package/dist-server/index.js.map +1 -1
  155. package/dist-server/routes.js +12 -0
  156. package/dist-server/routes.js.map +1 -1
  157. package/dist-server/utils/inventory-util.js +14 -25
  158. package/dist-server/utils/inventory-util.js.map +1 -1
  159. package/dist-server/utils/worksheet-no-generator.js +25 -28
  160. package/dist-server/utils/worksheet-no-generator.js.map +1 -1
  161. package/package.json +17 -17
  162. package/server/constants/template.ts +1 -0
  163. package/server/controllers/ecommerce/sellercraft-controller.ts +38 -10
  164. package/server/controllers/inbound/putaway-worksheet-controller.ts +27 -13
  165. package/server/controllers/inbound/unloading-worksheet-controller.ts +376 -8
  166. package/server/controllers/index.ts +3 -0
  167. package/server/controllers/outbound/loading-worksheet-controller.ts +94 -15
  168. package/server/controllers/outbound/packing-worksheet-controller.ts +224 -9
  169. package/server/controllers/outbound/picking-worksheet-controller.ts +653 -24
  170. package/server/controllers/outbound/returning-worksheet-controller.ts +12 -1
  171. package/server/controllers/outbound/sorting-worksheet-controller.ts +303 -18
  172. package/server/controllers/render-fm-grn.ts +266 -0
  173. package/server/controllers/render-grn.ts +95 -52
  174. package/server/controllers/render-invoices.ts +119 -72
  175. package/server/controllers/render-manifest.ts +12 -5
  176. package/server/controllers/render-orientage-do.ts +11 -11
  177. package/server/controllers/render-orientage-grn.ts +12 -11
  178. package/server/controllers/render-po.ts +170 -0
  179. package/server/controllers/render-ro-do.ts +93 -8
  180. package/server/controllers/worksheet-controller.ts +32 -3
  181. package/server/entities/index.ts +2 -1
  182. package/server/entities/warehouse-bizplace-onhand-inventory.ts +147 -0
  183. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +14 -0
  184. package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +27 -0
  185. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +15 -5
  186. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +35 -2
  187. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +35 -25
  188. package/server/graphql/resolvers/worksheet/index.ts +3 -1
  189. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +2 -0
  190. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +67 -8
  191. package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -12
  192. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +66 -13
  193. package/server/graphql/resolvers/worksheet/packing/index.ts +3 -1
  194. package/server/graphql/resolvers/worksheet/packing/packing.ts +5 -4
  195. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -4
  196. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
  197. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +167 -145
  198. package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +2 -2
  199. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +15 -11
  200. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
  201. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +18 -31
  202. package/server/graphql/resolvers/worksheet/picking/index.ts +5 -1
  203. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +62 -61
  204. package/server/graphql/resolvers/worksheet/picking/picking.ts +30 -4
  205. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +7 -4
  206. package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
  207. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
  208. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +13 -2
  209. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -2
  210. package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +13 -9
  211. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +6 -4
  212. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +6 -4
  213. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +6 -0
  214. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +6 -2
  215. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +0 -25
  216. package/server/graphql/resolvers/worksheet/unloading/index.ts +4 -0
  217. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
  218. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
  219. package/server/graphql/resolvers/worksheet/unloading/unload.ts +3 -1
  220. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +3 -1
  221. package/server/graphql/resolvers/worksheet/worksheet.ts +2 -0
  222. package/server/graphql/resolvers/worksheet/worksheets.ts +64 -5
  223. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +30 -14
  224. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +39 -11
  225. package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +46 -49
  226. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +15 -3
  227. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +18 -1
  228. package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +2 -2
  229. package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
  230. package/server/graphql/types/worksheet/index.ts +52 -11
  231. package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +1 -0
  232. package/server/graphql/types/worksheet/picking-assignment-status.ts +2 -2
  233. package/server/graphql/types/worksheet/worksheet-detail-info.ts +8 -3
  234. package/server/graphql/types/worksheet/worksheet-info.ts +3 -0
  235. package/server/graphql/types/worksheet/worksheet-patch.ts +1 -0
  236. package/server/graphql/types/worksheet/worksheet.ts +1 -0
  237. package/server/graphql/types/worksheet-detail/index.ts +0 -2
  238. package/server/graphql/types/worksheet-detail/inventory-detail.ts +5 -2
  239. package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +1 -1
  240. package/server/index.ts +5 -0
  241. package/server/routes.ts +17 -0
  242. package/server/utils/inventory-util.ts +15 -23
  243. package/server/utils/worksheet-no-generator.ts +25 -25
@@ -19,165 +19,187 @@ import { fetchExecutingWorksheet } from '../../../utils'
19
19
 
20
20
  export const packingWorksheetResolver = {
21
21
  async packingWorksheet(_: any, { releaseGoodNo }, context: any) {
22
- const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
23
- let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
24
- where: {
25
- domain,
26
- name: releaseGoodNo
27
- },
28
- relations: ['bizplace', 'bizplace.domain']
29
- })
30
-
31
- // Find Release Order based on Bin
32
- if (!releaseGood) {
33
- const binLocation: Location = await tx.getRepository(Location).findOne({
34
- where: { domain, name: releaseGoodNo }
22
+ try {
23
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
24
+ let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
25
+ where: {
26
+ domain,
27
+ name: releaseGoodNo
28
+ },
29
+ relations: ['bizplace', 'bizplace.domain']
35
30
  })
36
31
 
37
- const qb: SelectQueryBuilder<OrderInventory> = tx
38
- .getRepository(OrderInventory)
39
- .createQueryBuilder('orderInventory')
40
- qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
41
- .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
42
- .innerJoinAndSelect('bizplace.domain', 'domain')
43
- .where('orderInventory.domain_id = :domainId', { domainId: domain.id })
44
- .andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
45
- orderInventoryStatus: [ORDER_INVENTORY_STATUS.PACKING, ORDER_INVENTORY_STATUS.PACKED]
32
+ // Find Release Order based on Bin
33
+ if (!releaseGood) {
34
+ const binLocation: Location = await tx.getRepository(Location).findOne({
35
+ where: { domain, name: releaseGoodNo }
46
36
  })
47
- .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
48
- .andWhere('releaseGood.status = :status', { status: ORDER_STATUS.PACKING })
49
-
50
- const orderInventoryByBin = await qb.getOne()
51
- if (orderInventoryByBin?.releaseGood) {
52
- releaseGoodNo = orderInventoryByBin.releaseGood.name
53
- releaseGood = orderInventoryByBin.releaseGood
54
- }
55
- }
56
37
 
57
- if (!releaseGood) throw new Error(`Release good dosen't exist.`)
58
-
59
- const worksheet: Worksheet = await fetchExecutingWorksheet(
60
- domain,
61
- releaseGood.bizplace,
62
- [
63
- 'bizplace',
64
- 'bizplace.domain',
65
- 'releaseGood',
66
- 'releaseGood.domain',
67
- 'worksheetDetails',
68
- 'worksheetDetails.targetInventory',
69
- 'worksheetDetails.targetInventory.binLocation',
70
- 'worksheetDetails.targetInventory.inventory',
71
- 'worksheetDetails.targetInventory.inventory.location',
72
- 'worksheetDetails.targetInventory.inventory.product',
73
- 'worksheetDetails.toLocation'
74
- ],
75
- WORKSHEET_TYPE.PACKING,
76
- releaseGood
77
- )
78
-
79
- let marketplaceOrder: MarketplaceOrder
80
- let marketplaceOrderItems: MarketplaceOrderItem[] = []
81
- let marketplaceStore
82
- let trackingNo: string
83
- let shippingProvider: string
84
- let marketplaceStatus: string
85
-
86
- if (releaseGood.type === 'b2c') {
87
- const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
88
- domain: worksheet.bizplace.domain,
89
- status: SellercraftStatus.ACTIVE
90
- })
91
-
92
- if (sellercraft) {
93
- if (!releaseGood?.airwayBill) {
94
- const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
95
- releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
38
+ if (binLocation) {
39
+ const qb: SelectQueryBuilder<OrderInventory> = tx
40
+ .getRepository(OrderInventory)
41
+ .createQueryBuilder('orderInventory')
42
+
43
+ qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
44
+ .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
45
+ .innerJoinAndSelect('bizplace.domain', 'domain')
46
+ .innerJoinAndSelect(
47
+ 'worksheets',
48
+ 'ws',
49
+ `orderInventory.release_good_id = ws.release_good_id AND ws.type = 'PACKING' AND ws.status = 'EXECUTING'`
50
+ )
51
+ .where('orderInventory.domain_id = :domainId', { domainId: domain.id })
52
+ .andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
53
+ orderInventoryStatus: [
54
+ ORDER_INVENTORY_STATUS.READY_TO_PACK,
55
+ ORDER_INVENTORY_STATUS.PACKING,
56
+ ORDER_INVENTORY_STATUS.PACKED
57
+ ]
58
+ })
59
+ .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
60
+ .andWhere('releaseGood.status IN (:...status)', {
61
+ status: [ORDER_STATUS.READY_TO_PACK, ORDER_STATUS.PACKING]
62
+ })
63
+
64
+ const orderInventoryByBin = await qb.getOne()
65
+ if (orderInventoryByBin?.releaseGood) {
66
+ releaseGoodNo = orderInventoryByBin.releaseGood.name
67
+ releaseGood = orderInventoryByBin.releaseGood
68
+ } else {
69
+ throw new Error(`Bin do not have any existing order.`)
70
+ }
96
71
  }
97
- trackingNo = releaseGood?.trackingNo
98
- shippingProvider = releaseGood?.transporter
99
- marketplaceStatus = releaseGood?.marketplaceOrderStatus
100
72
  }
101
73
 
102
- if (!sellercraft) {
103
- marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
104
- where: { orderNo: releaseGood.refNo },
105
- relations: [
106
- 'domain',
107
- 'marketplaceStore',
108
- 'marketplaceOrderItems',
109
- 'marketplaceOrderItems.marketplaceOrderShippingItems',
110
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
111
- ]
112
- })
74
+ if (!releaseGood) throw new Error(`Release good do not exist.`)
113
75
 
114
- if (!marketplaceOrder) {
115
- throw new Error('Failed to retrieve ecommerce information, kindly contact our support team for this issue.')
116
- }
76
+ const worksheet: Worksheet = await fetchExecutingWorksheet(
77
+ domain,
78
+ releaseGood.bizplace,
79
+ [
80
+ 'bizplace',
81
+ 'bizplace.domain',
82
+ 'releaseGood',
83
+ 'releaseGood.domain',
84
+ 'worksheetDetails',
85
+ 'worksheetDetails.targetInventory',
86
+ 'worksheetDetails.targetInventory.binLocation',
87
+ 'worksheetDetails.targetInventory.inventory',
88
+ 'worksheetDetails.targetInventory.inventory.location',
89
+ 'worksheetDetails.targetInventory.inventory.product',
90
+ 'worksheetDetails.targetInventory.inventory.product.productDetails',
91
+ 'worksheetDetails.toLocation'
92
+ ],
93
+ WORKSHEET_TYPE.PACKING,
94
+ releaseGood
95
+ )
96
+
97
+ let marketplaceOrder: MarketplaceOrder
98
+ let marketplaceOrderItems: MarketplaceOrderItem[] = []
99
+ let marketplaceStore
100
+ let trackingNo: string
101
+ let shippingProvider: string
102
+ let marketplaceStatus: string
103
+
104
+ if (releaseGood.type === 'b2c') {
105
+ const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
106
+ domain: worksheet.bizplace.domain,
107
+ status: SellercraftStatus.ACTIVE
108
+ })
117
109
 
118
- let marketplaceOrderShipping: MarketplaceOrderShipping
119
- if (marketplaceOrder.isSplitted) {
120
- marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
121
- where: { subOrderNoRef: worksheet.releaseGood.refNo2 }
122
- })
110
+ if (sellercraft) {
111
+ if (!releaseGood?.airwayBill) {
112
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
113
+ releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
114
+ }
115
+ trackingNo = releaseGood?.trackingNo
116
+ shippingProvider = releaseGood?.transporter
117
+ marketplaceStatus = releaseGood?.marketplaceOrderStatus
123
118
  } else {
124
- marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
125
- where: { orderNoRef: worksheet.releaseGood.refNo }
119
+ marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
120
+ where: { orderNo: releaseGood.refNo },
121
+ relations: [
122
+ 'domain',
123
+ 'marketplaceStore',
124
+ 'marketplaceOrderItems',
125
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
126
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
127
+ ]
126
128
  })
127
- }
128
129
 
129
- trackingNo = marketplaceOrderShipping.ownTrackingNo
130
- ? marketplaceOrderShipping.ownTrackingNo
131
- : marketplaceOrderShipping.trackingNo
132
- shippingProvider = marketplaceOrderShipping.ownTransporter
133
- ? marketplaceOrderShipping.ownTransporter
134
- : marketplaceOrderShipping.transporter
135
-
136
- marketplaceStore = marketplaceOrder?.marketplaceStore
137
- marketplaceStatus = marketplaceOrder?.status
130
+ if (!marketplaceOrder) {
131
+ throw new Error('Failed to retrieve ecommerce information, kindly contact our support team for this issue.')
132
+ }
133
+
134
+ let marketplaceOrderShipping: MarketplaceOrderShipping
135
+ if (marketplaceOrder.isSplitted) {
136
+ marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
137
+ where: { subOrderNoRef: worksheet.releaseGood.refNo2 }
138
+ })
139
+ } else {
140
+ marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
141
+ where: { orderNoRef: worksheet.releaseGood.refNo }
142
+ })
143
+ }
144
+
145
+ trackingNo = marketplaceOrderShipping.ownTrackingNo
146
+ ? marketplaceOrderShipping.ownTrackingNo
147
+ : marketplaceOrderShipping.trackingNo
148
+ shippingProvider = marketplaceOrderShipping.ownTransporter
149
+ ? marketplaceOrderShipping.ownTransporter
150
+ : marketplaceOrderShipping.transporter
151
+
152
+ marketplaceStore = marketplaceOrder?.marketplaceStore
153
+ marketplaceStatus = marketplaceOrder?.status
154
+ }
138
155
  }
139
- }
140
156
 
141
- return {
142
- worksheetInfo: {
143
- releaseGood,
144
- bizplaceName: releaseGood.bizplace.name,
145
- refNo: releaseGood.refNo,
146
- refNo2: releaseGood.refNo2,
147
- refNo3: releaseGood.refNo3,
148
- partnerDomainId: releaseGood.bizplace?.domain.id,
149
- startedAt: worksheet.startedAt,
150
- shippingProvider: shippingProvider ? shippingProvider : '',
151
- trackingNo: trackingNo ? trackingNo : '',
152
- airwayBill: releaseGood?.airwayBill,
153
- invoice: releaseGood?.invoice,
154
- platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
155
- marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
156
- marketplaceStatus: marketplaceStatus ? marketplaceStatus : '',
157
- marketplaceOrder: marketplaceOrder ? marketplaceOrder : ''
158
- },
159
- worksheetDetailInfos: worksheet.worksheetDetails.map(async (packingWSD: WorksheetDetail) => {
160
- const targetInventory: OrderInventory = packingWSD.targetInventory
161
- const inventory: Inventory = targetInventory.inventory
162
- return {
163
- name: packingWSD.name,
164
- palletId: inventory.palletId,
165
- cartonId: inventory.cartonId,
166
- batchId: inventory.batchId,
167
- batchIdRef: inventory.batchIdRef,
168
- product: inventory.product,
169
- sku: inventory.product.sku,
170
- releaseQty: targetInventory.releaseQty,
171
- packedQty: targetInventory.packedQty,
172
- status: packingWSD.status,
173
- description: packingWSD.description,
174
- targetName: targetInventory.name,
175
- packingType: inventory.packingType,
176
- packingSize: inventory.packingSize,
177
- binLocation: targetInventory?.binLocation,
178
- location: inventory.location
179
- }
180
- })
157
+ return {
158
+ worksheetInfo: {
159
+ releaseGood,
160
+ bizplaceName: releaseGood.bizplace.name,
161
+ refNo: releaseGood.refNo,
162
+ refNo2: releaseGood.refNo2,
163
+ refNo3: releaseGood.refNo3,
164
+ partnerDomainId: releaseGood.bizplace?.domain.id,
165
+ startedAt: worksheet.startedAt,
166
+ shippingProvider: shippingProvider ? shippingProvider : '',
167
+ trackingNo: trackingNo ? trackingNo : '',
168
+ airwayBill: releaseGood?.airwayBill,
169
+ checkedRemarkBy: releaseGood?.checkedRemarkBy,
170
+ invoice: releaseGood?.invoice,
171
+ platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
172
+ marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
173
+ marketplaceStatus: marketplaceStatus ? marketplaceStatus : '',
174
+ marketplaceOrder: marketplaceOrder ? marketplaceOrder : ''
175
+ },
176
+ worksheetDetailInfos: worksheet.worksheetDetails.map(async (packingWSD: WorksheetDetail) => {
177
+ const targetInventory: OrderInventory = packingWSD.targetInventory
178
+ const inventory: Inventory = targetInventory.inventory
179
+ return {
180
+ name: packingWSD.name,
181
+ palletId: inventory.palletId,
182
+ cartonId: inventory.cartonId,
183
+ batchId: inventory.batchId,
184
+ batchIdRef: inventory.batchIdRef,
185
+ product: inventory.product,
186
+ sku: inventory.product.sku,
187
+ releaseQty: targetInventory.releaseQty,
188
+ packedQty: targetInventory.packedQty,
189
+ status: packingWSD.status,
190
+ description: packingWSD.description,
191
+ targetName: targetInventory.name,
192
+ packingType: inventory.packingType,
193
+ packingSize: inventory.packingSize,
194
+ binLocation: targetInventory?.binLocation,
195
+ location: inventory.location,
196
+ relatedOrderInv: targetInventory
197
+ }
198
+ })
199
+ }
200
+ } catch (error) {
201
+ console.error(error)
202
+ throw error
181
203
  }
182
204
  }
183
205
  }
@@ -1,7 +1,7 @@
1
1
  import { User } from '@things-factory/auth-base'
2
2
  import { Domain } from '@things-factory/shell'
3
3
  import { ArrivalNotice, OrderVas, Vas, ORDER_STATUS, ORDER_VAS_STATUS, ORDER_TYPES } from '@things-factory/sales-base'
4
- import uuid from 'uuid/v4'
4
+ import { v4 as uuidv4 } from 'uuid'
5
5
  import { Equal, Not, EntityManager } from 'typeorm'
6
6
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
7
7
  import { Worksheet, WorksheetDetail } from '../../../entities'
@@ -74,7 +74,7 @@ export const palletizingPallets = {
74
74
  }
75
75
  } else {
76
76
  orderVass = {
77
- name: uuid(),
77
+ name: uuidv4(),
78
78
  set: patch.set,
79
79
  vas: palletizingVAS,
80
80
  qty: patch.qty,
@@ -7,7 +7,7 @@ import { Worksheet } from '../../../../entities'
7
7
  export const assignPickingWorkerResolver = {
8
8
  async assignPickingWorker(
9
9
  _parentObj: void,
10
- { worksheetId, userId }: { worksheetId: string; userId: string },
10
+ { worksheetId, userId }: { worksheetId: [string]; userId: string },
11
11
  context: any
12
12
  ): Promise<void> {
13
13
  const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
@@ -17,16 +17,20 @@ export const assignPickingWorkerResolver = {
17
17
 
18
18
  if (!assignee) throw new Error('failed to find target user')
19
19
 
20
- const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
21
- id: worksheetId,
22
- type: WORKSHEET_TYPE.PICKING
23
- })
20
+ await Promise.all(worksheetId.map(async (worksheetId)=>{
21
+ const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
22
+ id: worksheetId,
23
+ },{where: [{
24
+ type:WORKSHEET_TYPE.BATCH_PICKING
25
+ },{type:WORKSHEET_TYPE.PICKING}]})
26
+
27
+ if (!worksheet) throw new Error('failed to find target picking worksheet')
28
+ if (worksheet.status !== WORKSHEET_STATUS.DEACTIVATED)
29
+ throw new Error(`current status of worksheet is not able to assign worker`)
30
+
31
+ worksheet.assignee = assignee
32
+ await tx.getRepository(Worksheet).save(worksheet)
24
33
 
25
- if (!worksheet) throw new Error('failed to find target picking worksheet')
26
- if (worksheet.status !== WORKSHEET_STATUS.DEACTIVATED)
27
- throw new Error(`current status of worksheet is not able to assign worker`)
28
-
29
- worksheet.assignee = assignee
30
- await tx.getRepository(Worksheet).save(worksheet)
34
+ }))
31
35
  }
32
36
  }
@@ -42,7 +42,7 @@ export async function completeBatchPicking(
42
42
  const worksheet = await pickingWSCtrl.completeBatchPicking(taskNo)
43
43
 
44
44
  const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
45
- const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
45
+ const targetInventories: OrderInventory[] = worksheetDetails.filter(wsd=>wsd.status != 'MISSING').map((wsd: WorksheetDetail) => wsd.targetInventory)
46
46
 
47
47
  const sellercraft: Sellercraft = await tx
48
48
  .getRepository(Sellercraft)
@@ -5,7 +5,6 @@ import { Bizplace, ContactPoint, getMyBizplace } from '@things-factory/biz-base'
5
5
  import { LastMileAPI, LastMileDelivery } from '@things-factory/integration-lmd'
6
6
  import { MarketplaceStore, MarketplaceTransporter } from '@things-factory/integration-marketplace'
7
7
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
8
- import { Sftp, SftpAPI } from '@things-factory/integration-sftp'
9
8
  import {
10
9
  MarketplaceOrder,
11
10
  MarketplaceOrderItem,
@@ -206,30 +205,16 @@ export async function completePicking(
206
205
  }
207
206
  }
208
207
  } else {
209
- throw resp
210
- //Failed
208
+ if (resp?.AWBurl && resp?.TrackingNo)
209
+ await tx
210
+ .getRepository(MarketplaceOrderShipping)
211
+ .update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo })
212
+ else throw resp
211
213
  }
212
214
  }
213
215
  }
214
216
  }
215
217
 
216
- const customerDomain: Domain = releaseGood.bizplace.domain
217
- let customerAvailableSftp: Sftp = await tx.getRepository(Sftp).findOne({
218
- where: { domain: customerDomain }
219
- })
220
- if (customerAvailableSftp) {
221
- const orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({
222
- where: { releaseGood },
223
- relations: ['product']
224
- })
225
- let result: Sftp = await SftpAPI.createShipment(customerAvailableSftp, {
226
- releaseGood,
227
- orderInventories,
228
- sftp: customerAvailableSftp
229
- })
230
- customerAvailableSftp = await tx.getRepository(Sftp).save(result)
231
- }
232
-
233
218
  if (releaseGood.packingOption) {
234
219
  const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
235
220
 
@@ -263,18 +248,20 @@ export async function completePicking(
263
248
  })
264
249
 
265
250
  if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
266
- const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
267
- let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
268
- releaseGoodNo,
269
- pickedTargetInventories
270
- )
271
-
272
- if (!loadingWorksheet.worksheetDetails?.length) {
273
- loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id)
251
+ if(pickedTargetInventories.length>0){
252
+ const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
253
+ let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
254
+ releaseGoodNo,
255
+ pickedTargetInventories
256
+ )
257
+
258
+ if (!loadingWorksheet.worksheetDetails?.length) {
259
+ loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id)
260
+ }
261
+
262
+ const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
263
+ await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
274
264
  }
275
-
276
- const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
277
- await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
278
265
  } else {
279
266
  const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
280
267
  let loadingWorksheet: Worksheet = await loadingWSCtrl.updateLoadingWorksheet(
@@ -10,6 +10,8 @@ import { pickingResolver } from './picking'
10
10
  import { scanProductPickingResolver } from './scan-product-picking'
11
11
  import { scanProductBatchPickingResolver } from './scan-product-batch-picking'
12
12
  import { undoPickingAssigmentResolver } from './undo-picking-assignment'
13
+ import { undoSerialNumberPickingResolver } from './undo-serial-number-picking'
14
+ import { sealToteResolver } from './seal-tote'
13
15
 
14
16
  export const Mutations = {
15
17
  ...assignPickingInventoriesResolver,
@@ -23,5 +25,7 @@ export const Mutations = {
23
25
  ...completePickingResolver,
24
26
  ...completeBatchPickingResolver,
25
27
  ...assignPickingWorkerResolver,
26
- ...fetchAndAssignPickingTaskResolver
28
+ ...fetchAndAssignPickingTaskResolver,
29
+ ...undoSerialNumberPickingResolver,
30
+ ...sealToteResolver
27
31
  }
@@ -1,81 +1,82 @@
1
- import { getDomainUsers, User } from '@things-factory/auth-base'
2
- import { Bizplace } from '@things-factory/biz-base'
3
- import { Domain } from '@things-factory/shell'
4
- import { FindManyOptions, getRepository, ILike, In } from 'typeorm'
1
+ import { getDomainUsers, User, Role } from '@things-factory/auth-base'
2
+ import { Domain, ListParam, buildQuery, Sorting} from '@things-factory/shell'
3
+ import { FindManyOptions, getRepository, ILike, In, EntityManager, getManager, SelectQueryBuilder } from 'typeorm'
5
4
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
6
5
  import { Worksheet } from '../../../../entities'
7
6
 
8
- type AssignmentStatusByUserType = { user: User; pending?: Worksheet[]; picking?: Worksheet[] }
7
+ type AssignmentStatusByUserType = { user: User; pending?: String; picking?: String }
9
8
 
10
9
  export const pickingAssignmentStatusByUsersResolver = {
11
10
  async pickingAssignmentStatusByUsers(
12
11
  _: void,
13
- { bizplaceId, name, email }: { bizplaceId: string; name?: string; email?: string },
12
+ params: ListParam,
14
13
  context: any
15
14
  ): Promise<AssignmentStatusByUserType[]> {
15
+
16
16
  const { domain }: { domain: Domain } = context.state
17
- const domainUsers: User[] = await getDomainUsers(domain)
18
17
 
19
- const domainUserIds: string[] = domainUsers
20
- .filter((user: User) => user.userType === 'user')
21
- .map((user: User) => user.id)
22
- const findOneOption: FindManyOptions<User> = { where: { id: In(domainUserIds) } }
23
- if (name) findOneOption.where.name = ILike(`%${name}%`)
24
- if (email) findOneOption.where.email = ILike(`%${email}%`)
18
+ const nameFilter = params.filters.find(p=>{return p.name == "name"});
19
+ const emailFilter = params.filters.find(p=>{return p.name == "email"});
20
+ const roleFilter = params.filters.find(p=>{return p.name == 'roles'});
25
21
 
26
- const users: User[] = await getRepository(User).find(findOneOption)
22
+ const pendingSorter = params.sortings.find(p=>{return p.name == 'pending'});
23
+ const pickingSorter = params.sortings.find(p=>{return p.name == 'picking'});
27
24
 
28
- const bizplace: Bizplace = await getRepository(Bizplace).findOne(bizplaceId)
29
- const assignedPickingWorksheets: Worksheet[] = await getRepository(Worksheet).find({
30
- where: {
31
- domain,
32
- bizplace,
33
- type: WORKSHEET_TYPE.PICKING,
34
- status: In([WORKSHEET_STATUS.DEACTIVATED, WORKSHEET_STATUS.EXECUTING]),
35
- assignee: In(users.map((u: User) => u.id))
36
- },
37
- relations: ['assignee']
38
- })
39
25
 
40
- const assignmentMap: Map<string, AssignmentStatusByUserType> = assignedPickingWorksheets.reduce(
41
- (assignmentMap: Map<string, AssignmentStatusByUserType>, worksheet: Worksheet) => {
42
- const assignee: User = worksheet.assignee
43
- const status: string = worksheet.status
44
26
 
45
- if (assignmentMap.has(assignee.id)) {
46
- const assignment: AssignmentStatusByUserType = assignmentMap.get(assignee.id)
47
- if (status === WORKSHEET_STATUS.DEACTIVATED) {
48
- assignment.pending.push(worksheet)
49
- } else if (status === WORKSHEET_STATUS.EXECUTING) {
50
- assignment.picking.push(worksheet)
51
- }
52
- } else {
53
- if (status === WORKSHEET_STATUS.DEACTIVATED) {
54
- assignmentMap.set(assignee.id, {
55
- user: assignee,
56
- pending: [worksheet],
57
- picking: []
58
- })
59
- } else if (status === WORKSHEET_STATUS.EXECUTING) {
60
- assignmentMap.set(assignee.id, {
61
- user: assignee,
62
- pending: [],
63
- picking: [worksheet]
64
- })
65
- }
66
- }
27
+ const getUserInfoQb:SelectQueryBuilder<User> = await getRepository(User).createQueryBuilder('u')
67
28
 
68
- return assignmentMap
69
- },
70
- new Map()
71
- )
29
+ getUserInfoQb.select('u.id')
30
+ getUserInfoQb.addSelect('u.name')
31
+ getUserInfoQb.addSelect('u.email')
32
+ getUserInfoQb.addSelect("string_agg(r.name,', ') as roles")
33
+ getUserInfoQb.innerJoin('u.roles','r')
34
+ getUserInfoQb.where('r.domain_id = :domainId',{domainId:domain.id})
35
+ roleFilter? getUserInfoQb.andWhere('r.name ilike :userRole', { userRole: `%${roleFilter.value}%` }) :""
36
+ nameFilter? getUserInfoQb.andWhere('u.name ilike :userName', { userName: `%${nameFilter.value}%` }) :""
37
+ emailFilter? getUserInfoQb.andWhere('u.email ilike :userEmail', { userEmail: `%${emailFilter.value}%` }) :""
38
+ getUserInfoQb.andWhere('r.name not ilike :userR',{userR:`%CLIENT%`})
39
+ getUserInfoQb.andWhere('u.user_type = :userType',{userType:"user"})
40
+ getUserInfoQb.groupBy('u.id')
41
+ getUserInfoQb.addGroupBy('u.name')
42
+ getUserInfoQb.addGroupBy('u.email')
43
+
44
+ const getAssignedWSQb = await getRepository(Worksheet).createQueryBuilder('ws')
45
+
46
+ getAssignedWSQb.select('ws.assignee_id')
47
+ getAssignedWSQb.addSelect('u.name')
48
+ getAssignedWSQb.addSelect("sum(case when ws.status='EXECUTING' then 1 else 0 end) as picking")
49
+ getAssignedWSQb.addSelect("sum(case when ws.status='DEACTIVATED' then 1 else 0 end) as pending")
50
+ getAssignedWSQb.innerJoin('ws.assignee','u')
51
+ getAssignedWSQb.where('ws.domain_id = :id',{id:domain.id})
52
+ getAssignedWSQb.andWhere('ws.type IN (:...type)', {type: [WORKSHEET_TYPE.PICKING, WORKSHEET_TYPE.BATCH_PICKING]})
53
+ getAssignedWSQb.andWhere('ws.status IN (:...status)', {status: [WORKSHEET_STATUS.DEACTIVATED, WORKSHEET_STATUS.EXECUTING]})
54
+ getAssignedWSQb.groupBy('ws.assignee_id')
55
+ getAssignedWSQb.addGroupBy('u.name')
56
+ pendingSorter?.desc ? getAssignedWSQb.orderBy('pending','DESC') : ''
57
+ pickingSorter?.desc ? getAssignedWSQb.orderBy('picking','DESC') : ''
58
+ pickingSorter && Object.keys(pickingSorter).length == 1 ?getAssignedWSQb.orderBy('picking','ASC') : ''
59
+ pendingSorter && Object.keys(pendingSorter).length == 1 ? getAssignedWSQb.orderBy('pending','ASC') : ''
72
60
 
73
- users.forEach((user: User) => {
74
- if (!assignmentMap.has(user.id)) {
75
- assignmentMap.set(user.id, { user, pending: [], picking: [] })
76
- }
77
- })
78
61
 
79
- return Array.from(assignmentMap.values())
62
+ const parameter1= getUserInfoQb.getParameters()
63
+ const parameter2 = getAssignedWSQb.getParameters()
64
+
65
+ const combineParams = Object.assign(parameter1, parameter2)
66
+
67
+ const combineQb = getManager().createQueryBuilder()
68
+
69
+ combineQb.select('u.*')
70
+ combineQb.addSelect('coalesce(ws.picking, 0) as picking')
71
+ combineQb.addSelect('coalesce(ws.pending, 0) as pending')
72
+ combineQb.from("(" + getUserInfoQb.getQuery() + ")","u")
73
+ combineQb.leftJoin("(" + getAssignedWSQb.getQuery() + ")","ws",' ws.assignee_id = u.u_id')
74
+ combineQb.setParameters(combineParams)
75
+
76
+ const combineInfo = await combineQb.getRawMany()
77
+
78
+ return combineInfo.map(itm => {
79
+ return { user: { id:itm.u_id,email:itm.u_email,name:itm.u_name, description: itm.roles },pending:itm.pending,picking:itm.picking }
80
+ })
80
81
  }
81
82
  }