@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
@@ -1,7 +1,13 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
- import { OrderInventory, ORDER_INVENTORY_STATUS, ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
4
+ import { Bizplace, Company } from '@things-factory/biz-base'
5
+ import { FulfillmentCenter } from '@things-factory/integration-fulfillment'
6
+ import { Sftp, SftpAPI } from '@things-factory/integration-sftp'
7
+ import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
3
8
  import { Domain } from '@things-factory/shell'
4
- import { EntityManager } from 'typeorm'
9
+ import { InventoryItem } from '@things-factory/warehouse-base'
10
+
5
11
  import { WORKSHEET_TYPE } from '../../../../constants'
6
12
  import { LoadingWorksheetController, ReturningWorksheetController } from '../../../../controllers'
7
13
  import { Worksheet, WorksheetDetail } from '../../../../entities'
@@ -20,14 +26,19 @@ export async function completeLoading(
20
26
  releaseGoodNo: string
21
27
  ): Promise<void> {
22
28
  const worksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
23
- const releaseGood: ReleaseGood = await worksheetController.findRefOrder(ReleaseGood, {
24
- domain,
25
- name: releaseGoodNo,
26
- status: ORDER_STATUS.LOADING
27
- })
29
+ const releaseGood: ReleaseGood = await worksheetController.findRefOrder(
30
+ ReleaseGood,
31
+ {
32
+ domain,
33
+ name: releaseGoodNo,
34
+ status: ORDER_STATUS.LOADING
35
+ },
36
+ ['bizplace', 'bizplace.domain']
37
+ )
28
38
  const worksheet: Worksheet = await worksheetController.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.LOADING, [
29
39
  'worksheetDetails',
30
- 'worksheetDetails.targetInventory'
40
+ 'worksheetDetails.targetInventory',
41
+ 'worksheetDetails.targetInventory.product'
31
42
  ])
32
43
  const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
33
44
  const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
@@ -35,6 +46,54 @@ export async function completeLoading(
35
46
  (targetInventory: OrderInventory) => targetInventory.status === ORDER_INVENTORY_STATUS.LOADING
36
47
  )
37
48
 
49
+ // Search Warehouse Company Domain
50
+ const warehouseCompanyBizplace: Bizplace = await tx
51
+ .getRepository(Bizplace)
52
+ .findOne({ where: { domain }, relations: ['company'] })
53
+
54
+ const warehouseCompany: Company = warehouseCompanyBizplace.company
55
+ const warehouseBizplaces: Bizplace[] = await tx
56
+ .getRepository(Bizplace)
57
+ .find({ where: { company: warehouseCompany }, relations: ['domain'] })
58
+ const warehouseCompanyBizplaces: Bizplace[] = warehouseBizplaces.filter(biz => biz.domain.extType == 'company')
59
+ const warehouseCompanyDomain: Domain = warehouseCompanyBizplaces[0].domain
60
+
61
+ const customerDomain: Domain = releaseGood.bizplace.domain
62
+ const fulfillmentCenter: FulfillmentCenter = await tx
63
+ .getRepository(FulfillmentCenter)
64
+ .findOne({ domain: warehouseCompanyDomain, centerId: domain.subdomain, status: 'active' })
65
+
66
+ if (fulfillmentCenter) {
67
+ let customerAvailableSftp: Sftp = await tx.getRepository(Sftp).findOne({
68
+ where: { domain: customerDomain, status: 'ACTIVE', fulfillmentCenter }
69
+ })
70
+ if (customerAvailableSftp) {
71
+ const responseFileTypes: any = JSON.parse(customerAvailableSftp.responseFileTypes)
72
+
73
+ let inventoryItems: InventoryItem[] = await tx.getRepository(InventoryItem).find({
74
+ where: { domain, outboundOrderId: releaseGood.id }
75
+ })
76
+
77
+ if (responseFileTypes.enableShipment) {
78
+ let shipmentResult: Sftp = await SftpAPI.createShipment(customerAvailableSftp, {
79
+ releaseGood,
80
+ orderInventories: targetInventories,
81
+ sftp: customerAvailableSftp
82
+ })
83
+ customerAvailableSftp = await tx.getRepository(Sftp).save(shipmentResult)
84
+ }
85
+
86
+ if (responseFileTypes.enableSerialNumber) {
87
+ let snResult: Sftp = await SftpAPI.createSerialNumber(customerAvailableSftp, {
88
+ releaseGood,
89
+ inventoryItems,
90
+ sftp: customerAvailableSftp
91
+ })
92
+ customerAvailableSftp = await tx.getRepository(Sftp).save(snResult)
93
+ }
94
+ }
95
+ }
96
+
38
97
  await worksheetController.completeLoading(releaseGoodNo)
39
98
 
40
99
  if (remainInventories.length) {
@@ -9,7 +9,7 @@ import { WorksheetDetail } from '../../../../entities'
9
9
  export const loadingResolver = {
10
10
  async loading(_: any, { loadedWorksheetDetails, releaseGoodNo, orderInfo }, context: any) {
11
11
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
12
- await loading(tx, domain, user, loadedWorksheetDetails, releaseGoodNo)
12
+ const worksheetDetails = await loading(tx, domain, user, loadedWorksheetDetails, releaseGoodNo)
13
13
  const worksheetController: WorksheetController = new WorksheetController(tx, domain, user)
14
14
  const releaseGood: ReleaseGood = await worksheetController.findRefOrder(
15
15
  ReleaseGood,
@@ -18,14 +18,7 @@ export const loadingResolver = {
18
18
  )
19
19
 
20
20
  const loadingWorksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
21
- let targetInventories: OrderInventory[] = []
22
- for (let worksheetDetail of loadedWorksheetDetails) {
23
- worksheetDetail = await loadingWorksheetController.findWorksheetDetailByName(worksheetDetail.name, [
24
- 'targetInventory'
25
- ])
26
- const targetInventory = worksheetDetail.targetInventory
27
- targetInventories.push(targetInventory)
28
- }
21
+ let targetInventories: OrderInventory[] = worksheetDetails.map(itm => itm.targetInventory)
29
22
 
30
23
  const bizplace: Bizplace = releaseGood.bizplace
31
24
  orderInfo = {
@@ -41,9 +34,9 @@ export async function loading(
41
34
  tx: EntityManager,
42
35
  domain: Domain,
43
36
  user: User,
44
- worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }>[],
37
+ worksheetDetails: Partial<WorksheetDetail & { loadedQty: number } & { toteName: string }>[],
45
38
  releaseGoodNo: string
46
- ): Promise<void> {
39
+ ): Promise<any> {
47
40
  const worksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
48
- await worksheetController.loading(releaseGoodNo, worksheetDetails)
41
+ return await worksheetController.loading(releaseGoodNo, worksheetDetails)
49
42
  }
@@ -1,6 +1,13 @@
1
1
  import { Equal, getRepository, In, Not, SelectQueryBuilder } from 'typeorm'
2
2
 
3
- import { ORDER_STATUS, ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
3
+ import {
4
+ ORDER_STATUS,
5
+ ORDER_INVENTORY_STATUS,
6
+ OrderInventory,
7
+ ReleaseGood,
8
+ OrderTote,
9
+ OrderToteItem
10
+ } from '@things-factory/sales-base'
4
11
  import { Domain } from '@things-factory/shell'
5
12
  import { Inventory, Location } from '@things-factory/warehouse-base'
6
13
 
@@ -27,7 +34,9 @@ export const loadingWorksheetResolver = {
27
34
  .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
28
35
  .innerJoinAndSelect('bizplace.domain', 'domain')
29
36
  .where('orderInventory.domain_id = :domainId', { domainId: domain.id })
30
- .andWhere('orderInventory.status IN (:...orderInventoryStatus)', { orderInventoryStatus: [ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED] })
37
+ .andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
38
+ orderInventoryStatus: [ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED]
39
+ })
31
40
  .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
32
41
  .andWhere('releaseGood.status = :status', { status: ORDER_STATUS.LOADING })
33
42
 
@@ -41,6 +50,10 @@ export const loadingWorksheetResolver = {
41
50
 
42
51
  if (!releaseGood) throw new Error(`Release good doesn't exists.`)
43
52
 
53
+ let [orderTotes, orderTotesTotal]: OrderTote = await getRepository(OrderTote).findAndCount({
54
+ where: { releaseGood: releaseGood.id }
55
+ })
56
+
44
57
  const foundWorksheet: Worksheet = await fetchExecutingWorksheet(
45
58
  domain,
46
59
  releaseGood.bizplace,
@@ -48,7 +61,7 @@ export const loadingWorksheetResolver = {
48
61
  WORKSHEET_TYPE.LOADING,
49
62
  releaseGood
50
63
  )
51
- const foundWSD: WorksheetDetail[] = await getRepository(WorksheetDetail).find({
64
+ let foundWSD: any[] = await getRepository(WorksheetDetail).find({
52
65
  where: {
53
66
  domain,
54
67
  worksheet: foundWorksheet,
@@ -57,21 +70,50 @@ export const loadingWorksheetResolver = {
57
70
  },
58
71
  relations: [
59
72
  'targetInventory',
73
+ 'targetInventory.orderProduct',
60
74
  'targetInventory.inventory',
61
75
  'targetInventory.inventory.location',
62
76
  'targetInventory.inventory.product'
63
77
  ]
64
78
  })
65
79
 
66
- return {
67
- worksheetInfo: {
68
- releaseGood,
69
- bizplaceName: releaseGood.bizplace.name,
70
- startedAt: foundWorksheet.startedAt,
71
- refNo: releaseGood.refNo,
72
- ownCollection: releaseGood.ownTransport
73
- },
74
- worksheetDetailInfos: foundWSD.map(async (loadingWSD: WorksheetDetail) => {
80
+ if (orderTotesTotal > 0) {
81
+ let [toteItems, toteItemsTotal]: OrderToteItem = await getRepository(OrderToteItem).findAndCount({
82
+ where: { orderTote: In(orderTotes.map(itm => itm.id)) },
83
+ relations: ['orderTote', 'orderInventory']
84
+ })
85
+
86
+ let toteWsd = []
87
+
88
+ for (let i = 0; i < toteItemsTotal; i++) {
89
+ let wsdIndex = foundWSD.findIndex(
90
+ itm => !itm?.toteName && itm.targetInventory.id == toteItems[i].orderInventory.id
91
+ )
92
+
93
+ if (wsdIndex >= 0) {
94
+ let filterWSD: any = JSON.parse(JSON.stringify(foundWSD[wsdIndex]))
95
+ let uomValue =
96
+ Math.round((filterWSD.targetInventory.releaseUomValue / filterWSD.targetInventory.releaseQty) * 100) / 100
97
+
98
+ foundWSD[wsdIndex].targetInventory.releaseQty -= toteItems[i].qty
99
+ foundWSD[wsdIndex].targetInventory.pickedQty -= toteItems[i].qty
100
+ foundWSD[wsdIndex].targetInventory.releaseUomValue = foundWSD[wsdIndex].targetInventory.releaseQty * uomValue
101
+
102
+ filterWSD.targetInventory.releaseQty = toteItems[i].qty
103
+ filterWSD.targetInventory.pickedQty = toteItems[i].qty
104
+ filterWSD.targetInventory.releaseUomValue = toteItems[i].qty * uomValue
105
+ filterWSD.toteName = toteItems[i].orderTote.name
106
+ toteWsd.push(filterWSD)
107
+ }
108
+ }
109
+
110
+ foundWSD = foundWSD.concat(toteWsd)
111
+ foundWSD.sort((a, b) => (a.toteName > b.toteName ? 1 : -1))
112
+ }
113
+
114
+ let worksheetDetailInfos = foundWSD
115
+ .filter(itm => itm.targetInventory.releaseQty > 0)
116
+ .map((loadingWSD: any) => {
75
117
  const targetInventory: OrderInventory = loadingWSD.targetInventory
76
118
  const inventory: Inventory = targetInventory.inventory
77
119
  return {
@@ -87,9 +129,20 @@ export const loadingWorksheetResolver = {
87
129
  targetName: targetInventory.name,
88
130
  packingType: inventory.packingType,
89
131
  packingSize: inventory.packingSize,
90
- inventory: targetInventory.inventory
132
+ inventory: targetInventory.inventory,
133
+ toteName: loadingWSD.toteName
91
134
  }
92
135
  })
136
+
137
+ return {
138
+ worksheetInfo: {
139
+ releaseGood,
140
+ bizplaceName: releaseGood.bizplace.name,
141
+ startedAt: foundWorksheet.startedAt,
142
+ refNo: releaseGood.refNo,
143
+ ownCollection: releaseGood.ownTransport
144
+ },
145
+ worksheetDetailInfos
93
146
  }
94
147
  }
95
148
  }
@@ -2,10 +2,12 @@ import { activatePackingResolver } from './activate-packing'
2
2
  import { completePackingResolver } from './complete-packing'
3
3
  import { packingResolver } from './packing'
4
4
  import { scanProductPackingResolver } from './scan-product-packing'
5
+ import { undoSerialNumberPackingResolver } from './undo-serial-number-packing'
5
6
 
6
7
  export const Mutations = {
7
8
  ...activatePackingResolver,
8
9
  ...completePackingResolver,
9
10
  ...packingResolver,
10
- ...scanProductPackingResolver
11
+ ...scanProductPackingResolver,
12
+ ...undoSerialNumberPackingResolver
11
13
  }
@@ -9,9 +9,9 @@ import { PackingWorksheetController, SellercraftController } from '../../../../c
9
9
  import { Worksheet } from '../../../../entities'
10
10
 
11
11
  export const packingResolver = {
12
- async packing(_: any, { worksheetDetailName, releaseQty }, context: any) {
12
+ async packing(_: any, { worksheetDetailName, releaseQty, serialNumber }, context: any) {
13
13
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
14
- await packing(tx, domain, user, worksheetDetailName, releaseQty)
14
+ await packing(tx, domain, user, worksheetDetailName, releaseQty, serialNumber)
15
15
  }
16
16
  }
17
17
 
@@ -20,10 +20,11 @@ export async function packing(
20
20
  domain: Domain,
21
21
  user: User,
22
22
  worksheetDetailName: string,
23
- releaseQty: number
23
+ releaseQty: number,
24
+ serialNumber: string
24
25
  ) {
25
26
  const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
26
- const worksheetDetail = await worksheetController.packing(worksheetDetailName, releaseQty)
27
+ const worksheetDetail = await worksheetController.packing(worksheetDetailName, releaseQty, serialNumber)
27
28
 
28
29
  let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
29
30
  const worksheet: Worksheet = worksheetDetail.worksheet
@@ -9,9 +9,9 @@ import { PackingWorksheetController, SellercraftController } from '../../../../c
9
9
  import { Worksheet } from '../../../../entities'
10
10
 
11
11
  export const scanProductPackingResolver = {
12
- async scanProductPacking(_: any, { worksheetDetailName, productBarcode }, context: any) {
12
+ async scanProductPacking(_: any, { worksheetDetailName, productBarcode, serialNumber }, context: any) {
13
13
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
14
- await scanProductPacking(tx, domain, user, worksheetDetailName, productBarcode)
14
+ await scanProductPacking(tx, domain, user, worksheetDetailName, productBarcode, serialNumber)
15
15
  }
16
16
  }
17
17
 
@@ -20,10 +20,15 @@ export async function scanProductPacking(
20
20
  domain: Domain,
21
21
  user: User,
22
22
  worksheetDetailName: string,
23
- productBarcode: string
23
+ productBarcode: string,
24
+ serialNumber?: string
24
25
  ) {
25
26
  const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
26
- const worksheetDetail = await worksheetController.scanProductPacking(worksheetDetailName, productBarcode)
27
+ const worksheetDetail = await worksheetController.scanProductPacking(
28
+ worksheetDetailName,
29
+ productBarcode,
30
+ serialNumber
31
+ )
27
32
 
28
33
  let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
29
34
  const worksheet: Worksheet = worksheetDetail.worksheet
@@ -0,0 +1,24 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+
6
+ import { PackingWorksheetController } from '../../../../controllers'
7
+
8
+ export const undoSerialNumberPackingResolver = {
9
+ async undoSerialNumberPacking(_: any, { worksheetDetailName, inventoryItemId }, context: any) {
10
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
11
+ await undoSerialNumberPacking(tx, domain, user, worksheetDetailName, inventoryItemId)
12
+ }
13
+ }
14
+
15
+ async function undoSerialNumberPacking(
16
+ tx: EntityManager,
17
+ domain: Domain,
18
+ user: User,
19
+ worksheetDetailName: string,
20
+ inventoryItemId: string
21
+ ): Promise<void> {
22
+ const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
23
+ await worksheetController.undoSerialNumberPacking(worksheetDetailName, inventoryItemId)
24
+ }