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

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 (164) 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 +9 -3
  4. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  5. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +309 -4
  6. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/index.js +2 -0
  8. package/dist-server/controllers/index.js.map +1 -1
  9. package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -0
  10. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/packing-worksheet-controller.js +172 -7
  12. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/outbound/picking-worksheet-controller.js +352 -11
  14. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/outbound/returning-worksheet-controller.js +11 -1
  16. package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +110 -3
  18. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  19. package/dist-server/controllers/render-fm-grn.js +229 -0
  20. package/dist-server/controllers/render-fm-grn.js.map +1 -0
  21. package/dist-server/controllers/render-grn.js +45 -21
  22. package/dist-server/controllers/render-grn.js.map +1 -1
  23. package/dist-server/controllers/render-invoices.js +103 -65
  24. package/dist-server/controllers/render-invoices.js.map +1 -1
  25. package/dist-server/controllers/render-orientage-do.js.map +1 -1
  26. package/dist-server/controllers/render-orientage-grn.js +1 -0
  27. package/dist-server/controllers/render-orientage-grn.js.map +1 -1
  28. package/dist-server/controllers/render-po.js +147 -0
  29. package/dist-server/controllers/render-po.js.map +1 -0
  30. package/dist-server/controllers/render-ro-do.js +65 -1
  31. package/dist-server/controllers/render-ro-do.js.map +1 -1
  32. package/dist-server/controllers/worksheet-controller.js +15 -0
  33. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  34. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +10 -3
  35. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  36. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +30 -1
  37. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
  38. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +27 -23
  39. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
  40. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +3 -0
  41. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  42. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +26 -2
  43. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  44. package/dist-server/graphql/resolvers/worksheet/packing/index.js +2 -1
  45. package/dist-server/graphql/resolvers/worksheet/packing/index.js.map +1 -1
  46. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +4 -4
  47. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  48. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +4 -4
  49. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js +15 -0
  51. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -0
  52. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +152 -132
  53. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  54. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +13 -10
  55. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
  56. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +6 -19
  57. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  58. package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -1
  59. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  60. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +49 -58
  61. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
  62. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js +15 -0
  63. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -0
  64. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
  65. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
  66. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
  67. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
  68. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +6 -0
  69. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
  70. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +3 -2
  71. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  72. package/dist-server/graphql/resolvers/worksheet/unloading/index.js +3 -1
  73. package/dist-server/graphql/resolvers/worksheet/unloading/index.js.map +1 -1
  74. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js +15 -0
  75. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -0
  76. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js +15 -0
  77. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -0
  78. package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
  79. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +3 -1
  80. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
  81. package/dist-server/graphql/resolvers/worksheet/worksheets.js +26 -1
  82. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  83. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +4 -5
  84. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  85. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +4 -2
  86. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
  87. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js +11 -0
  88. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js.map +1 -0
  89. package/dist-server/graphql/types/worksheet/index.js +38 -11
  90. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  91. package/dist-server/graphql/types/worksheet/picking-assignment-status.js +2 -2
  92. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +6 -3
  93. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
  94. package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
  95. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  96. package/dist-server/graphql/types/worksheet/worksheet-patch.js +1 -0
  97. package/dist-server/graphql/types/worksheet/worksheet-patch.js.map +1 -1
  98. package/dist-server/graphql/types/worksheet-detail/index.js +0 -2
  99. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  100. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +2 -2
  101. package/dist-server/graphql/types/worksheet-detail/worksheet-detail-patch.js +1 -1
  102. package/dist-server/index.js +5 -0
  103. package/dist-server/index.js.map +1 -1
  104. package/dist-server/routes.js +12 -0
  105. package/dist-server/routes.js.map +1 -1
  106. package/dist-server/utils/inventory-util.js +14 -25
  107. package/dist-server/utils/inventory-util.js.map +1 -1
  108. package/package.json +17 -17
  109. package/server/constants/template.ts +1 -0
  110. package/server/controllers/ecommerce/sellercraft-controller.ts +10 -3
  111. package/server/controllers/inbound/unloading-worksheet-controller.ts +376 -8
  112. package/server/controllers/index.ts +3 -0
  113. package/server/controllers/outbound/loading-worksheet-controller.ts +13 -0
  114. package/server/controllers/outbound/packing-worksheet-controller.ts +224 -9
  115. package/server/controllers/outbound/picking-worksheet-controller.ts +465 -16
  116. package/server/controllers/outbound/returning-worksheet-controller.ts +12 -1
  117. package/server/controllers/outbound/sorting-worksheet-controller.ts +149 -4
  118. package/server/controllers/render-fm-grn.ts +266 -0
  119. package/server/controllers/render-grn.ts +57 -23
  120. package/server/controllers/render-invoices.ts +119 -72
  121. package/server/controllers/render-orientage-do.ts +11 -11
  122. package/server/controllers/render-orientage-grn.ts +12 -11
  123. package/server/controllers/render-po.ts +170 -0
  124. package/server/controllers/render-ro-do.ts +93 -8
  125. package/server/controllers/worksheet-controller.ts +18 -2
  126. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +13 -4
  127. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +35 -2
  128. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +35 -25
  129. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +2 -0
  130. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +41 -8
  131. package/server/graphql/resolvers/worksheet/packing/index.ts +3 -1
  132. package/server/graphql/resolvers/worksheet/packing/packing.ts +5 -4
  133. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -4
  134. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
  135. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +167 -145
  136. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +15 -11
  137. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +5 -20
  138. package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
  139. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +62 -61
  140. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
  141. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +5 -4
  142. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +5 -4
  143. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +6 -0
  144. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +6 -2
  145. package/server/graphql/resolvers/worksheet/unloading/index.ts +4 -0
  146. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
  147. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
  148. package/server/graphql/resolvers/worksheet/unloading/unload.ts +3 -1
  149. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +3 -1
  150. package/server/graphql/resolvers/worksheet/worksheets.ts +36 -1
  151. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +10 -12
  152. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +4 -2
  153. package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
  154. package/server/graphql/types/worksheet/index.ts +38 -11
  155. package/server/graphql/types/worksheet/picking-assignment-status.ts +2 -2
  156. package/server/graphql/types/worksheet/worksheet-detail-info.ts +6 -3
  157. package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
  158. package/server/graphql/types/worksheet/worksheet-patch.ts +1 -0
  159. package/server/graphql/types/worksheet-detail/index.ts +0 -2
  160. package/server/graphql/types/worksheet-detail/inventory-detail.ts +2 -2
  161. package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +1 -1
  162. package/server/index.ts +5 -0
  163. package/server/routes.ts +17 -0
  164. package/server/utils/inventory-util.ts +15 -23
@@ -4,9 +4,9 @@ import { EntityManager } from 'typeorm'
4
4
  import { SortingWorksheetController } from '../../../../controllers'
5
5
 
6
6
  export const sortingProductResolver = {
7
- async sortingProduct(_: any, { taskNo, releaseGoodNo, productId, sortingQty }, context: any) {
7
+ async sortingProduct(_: any, { taskNo, releaseGoodNo, productId, sortingQty, serialNumber }, context: any) {
8
8
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
9
- await sortingProduct(tx, domain, user, taskNo, releaseGoodNo, productId, sortingQty)
9
+ await sortingProduct(tx, domain, user, taskNo, releaseGoodNo, productId, sortingQty, serialNumber)
10
10
  }
11
11
  }
12
12
 
@@ -17,8 +17,9 @@ export async function sortingProduct(
17
17
  taskNo: string,
18
18
  releaseGoodNo: string,
19
19
  productId: string,
20
- sortingQty: number
20
+ sortingQty: number,
21
+ serialNumber?: string
21
22
  ) {
22
23
  const worksheetController: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
23
- await worksheetController.sortingProduct(taskNo, releaseGoodNo, productId, sortingQty)
24
+ await worksheetController.sortingProduct(taskNo, releaseGoodNo, productId, sortingQty, serialNumber)
24
25
  }
@@ -26,22 +26,26 @@ export const sortingWorksheetResolver = {
26
26
  const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('OI')
27
27
  qb.select('SUM(OI.releaseQty)', 'releaseQty')
28
28
  .addSelect('SUM(OI.sortedQty)', 'sortedQty')
29
+ .addSelect(`string_agg(CONCAT(BIN.name, '(', OI.releaseQty, ')' ), ' ')`, 'binRemarks')
29
30
  .addSelect('PROD.id', 'productId')
30
31
  .addSelect('PROD.name', 'productName')
31
32
  .addSelect('PROD.sku', 'productSku')
32
33
  .addSelect('PROD.description', 'productDescription')
34
+ .addSelect('PROD.isRequireSerialNumberScanningOutbound', 'isRequireSerialNumberScanningOutbound')
33
35
  .addSelect('OI.batch_id', 'batchId')
34
36
  .addSelect('OI.packing_type', 'packingType')
35
37
  .addSelect('OI.packing_size', 'packingSize')
36
38
  .addSelect('INV.expiration_date', 'expirationDate')
37
39
  .leftJoin('OI.product', 'PROD')
38
40
  .leftJoin('OI.inventory', 'INV')
41
+ .leftJoin('OI.binLocation', 'BIN')
39
42
  .where('OI.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood?.id })
40
43
  .andWhere('OI.status <> :releaseGoodStatus', { releaseGoodStatus: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT })
41
44
  .groupBy('PROD.id')
42
45
  .addGroupBy('PROD.name')
43
46
  .addGroupBy('PROD.sku')
44
47
  .addGroupBy('PROD.description')
48
+ .addGroupBy('PROD.isRequireSerialNumberScanningOutbound')
45
49
  .addGroupBy('INV.expiration_date')
46
50
  .addGroupBy('OI.batch_id')
47
51
  .addGroupBy('OI.packing_type')
@@ -67,12 +71,14 @@ export const sortingWorksheetResolver = {
67
71
  productSku: item?.productSku,
68
72
  productName: item?.productName,
69
73
  productDescription: item?.productDescription,
74
+ isRequireSerialNumberScanningOutbound: item?.isRequireSerialNumberScanningOutbound,
70
75
  releaseQty: item.releaseQty,
71
76
  sortedQty: item.sortedQty,
72
77
  status: item.status,
73
78
  expirationDate: item?.expirationDate,
74
79
  packingType: item?.packingType,
75
80
  packingSize: item?.packingSize,
81
+ binRemarks: item?.binRemarks,
76
82
  releaseGood
77
83
  }
78
84
  })
@@ -1,7 +1,9 @@
1
+ import { getRepository, In } from 'typeorm'
2
+
1
3
  import { ArrivalNotice, Bizplace, ReturnOrder } from '@things-factory/sales-base'
2
4
  import { Domain } from '@things-factory/shell'
3
5
  import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
4
- import { getRepository, In } from 'typeorm'
6
+
5
7
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
6
8
  import { WorksheetDetail } from '../../../entities'
7
9
 
@@ -46,9 +48,11 @@ export const unloadedInventories = {
46
48
  })
47
49
  const items = foundInv.map((inv: Inventory) => {
48
50
  const expirationDate: Date = inv.expirationDate ? new Date(inv.expirationDate) : null
51
+ const manufactureDate: Date = inv.manufactureDate ? new Date(inv.manufactureDate) : null
49
52
  return {
50
53
  ...inv,
51
- expirationDate: expirationDate
54
+ expirationDate: expirationDate,
55
+ manufactureDate: manufactureDate
52
56
  }
53
57
  })
54
58
 
@@ -3,14 +3,18 @@ import { completeProductScanUnloadResolver } from './complete-product-scan-unloa
3
3
  import { completeUnloadingResolver } from './complete-unloading'
4
4
  import { completeUnloadingPartiallyResolver } from './complete-unloading-partially'
5
5
  import { scanProductUnloadResolver } from './scan-product-unload'
6
+ import { scanSerialNumberUnloadResolver } from './scan-serial-number-unload'
7
+ import { undoSerialNumberUnloadResolver } from './undo-serial-number-unload'
6
8
  import { undoUnloadingResolver } from './undo-unloading'
7
9
  import { unloadResolver } from './unload'
8
10
 
9
11
  export const Mutations = {
10
12
  ...activateUnloadingResolver,
11
13
  ...scanProductUnloadResolver,
14
+ ...scanSerialNumberUnloadResolver,
12
15
  ...unloadResolver,
13
16
  ...undoUnloadingResolver,
17
+ ...undoSerialNumberUnloadResolver,
14
18
  ...completeProductScanUnloadResolver,
15
19
  ...completeUnloadingResolver,
16
20
  ...completeUnloadingPartiallyResolver
@@ -0,0 +1,26 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+ import { Inventory } from '@things-factory/warehouse-base'
6
+
7
+ import { UnloadingWorksheetController } from '../../../../controllers'
8
+
9
+ export const scanSerialNumberUnloadResolver = {
10
+ async scanSerialNumberUnload(_: any, { worksheetDetailName, serialNumber, inventory }, context: any) {
11
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
12
+ await scanSerialNumberUnload(tx, domain, user, worksheetDetailName, serialNumber, inventory)
13
+ }
14
+ }
15
+
16
+ async function scanSerialNumberUnload(
17
+ tx: EntityManager,
18
+ domain: Domain,
19
+ user: User,
20
+ worksheetDetailName: string,
21
+ serialNumber: string,
22
+ inventory: Partial<Inventory>
23
+ ): Promise<void> {
24
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
25
+ await worksheetController.scanSerialNumberUnload(worksheetDetailName, serialNumber, inventory)
26
+ }
@@ -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 { UnloadingWorksheetController } from '../../../../controllers'
7
+
8
+ export const undoSerialNumberUnloadResolver = {
9
+ async undoSerialNumberUnload(_: any, { worksheetDetailName, inventoryItemId }, context: any) {
10
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
11
+ await undoSerialNumberUnload(tx, domain, user, worksheetDetailName, inventoryItemId)
12
+ }
13
+ }
14
+
15
+ async function undoSerialNumberUnload(
16
+ tx: EntityManager,
17
+ domain: Domain,
18
+ user: User,
19
+ worksheetDetailName: string,
20
+ inventoryItemId: string
21
+ ): Promise<void> {
22
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
23
+ await worksheetController.undoSerialNumberUnload(worksheetDetailName, inventoryItemId)
24
+ }
@@ -1,7 +1,9 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Domain } from '@things-factory/shell'
3
5
  import { Inventory } from '@things-factory/warehouse-base'
4
- import { EntityManager } from 'typeorm'
6
+
5
7
  import { UnloadingWorksheetController } from '../../../../controllers'
6
8
 
7
9
  export const unloadResolver = {
@@ -59,6 +59,7 @@ export const unloadingWorksheetResolver = {
59
59
 
60
60
  return {
61
61
  worksheetInfo: {
62
+ arrivalNotice,
62
63
  bizplaceName: customerBizplace.name,
63
64
  partnerDomainId: customerBizplace?.domain.id,
64
65
  customerCompanyDomainId: customerCompanyDomain.id,
@@ -90,7 +91,8 @@ export const unloadingWorksheetResolver = {
90
91
  actualPackQty: targetProduct.actualPackQty,
91
92
  remark: targetProduct.remark,
92
93
  issue: productWSD.issue,
93
- status: productWSD.status
94
+ status: productWSD.status,
95
+ manufactureDate: targetProduct.manufactureDate ? new Date(targetProduct.manufactureDate) : null
94
96
  }
95
97
  })
96
98
  }
@@ -16,9 +16,15 @@ export const worksheetsResolver = {
16
16
  const arrivalNoticeParam: any = params.filters.find((param: any) => param.name === 'arrivalNoticeNo')
17
17
  const arrivalNoticeRefNoParam = params.filters.find(param => param.name === 'arrivalNoticeRefNo')
18
18
  const arrivalNoticeCrossDockingParam = params.filters.find(param => param.name === 'crossDocking')
19
+ const arrivalNoticeEtaDateParam = params.filters.find(param => param.name === 'etaDate')
19
20
  const typeParam = params.filters.find(param => param.name === 'type')
20
21
 
21
- if (arrivalNoticeParam || arrivalNoticeRefNoParam || arrivalNoticeCrossDockingParam) {
22
+ if (
23
+ arrivalNoticeParam ||
24
+ arrivalNoticeRefNoParam ||
25
+ arrivalNoticeCrossDockingParam ||
26
+ arrivalNoticeEtaDateParam
27
+ ) {
22
28
  let arrFilters = []
23
29
  if (arrivalNoticeParam) {
24
30
  params.filters.splice(
@@ -41,6 +47,9 @@ export const worksheetsResolver = {
41
47
  )
42
48
  arrFilters.push({ ...arrivalNoticeCrossDockingParam, name: 'crossDocking' })
43
49
  }
50
+ if (arrivalNoticeEtaDateParam) {
51
+ params.filters.splice(params.filters.findIndex(item => item.name == 'etaDate'))
52
+ }
44
53
  const foundArrivalNotices: ArrivalNotice[] = await getRepository(ArrivalNotice).find({
45
54
  ...convertListParams({ filters: arrFilters })
46
55
  })
@@ -99,6 +108,7 @@ export const worksheetsResolver = {
99
108
  const releaseGoodCrossDockingParam = params.filters.find(param => param.name === 'crossDocking')
100
109
  const releaseGoodCourierOptionParam = params.filters.find(param => param.name === 'courierOption')
101
110
  const releaseGoodPackingOptionParam = params.filters.find(param => param.name === 'packingOption')
111
+ const releaseGoodPickerOptionParam = params.filters.find(param => param.name === 'assignee')
102
112
  if (
103
113
  releaseGoodParam ||
104
114
  releaseGoodRefNoParam ||
@@ -252,6 +262,31 @@ export const worksheetsResolver = {
252
262
  }
253
263
  }
254
264
 
265
+ //find assignee
266
+
267
+ const assigneeParam = params.filters.find(param => param.name === 'assignee')
268
+ let assigneeFilter = []
269
+ if (assigneeParam) {
270
+ params.filters.splice(
271
+ params.filters.findIndex(item => item.name == 'assignee'),
272
+ 1
273
+ )
274
+ assigneeFilter.push({ ...assigneeParam, name: 'name' })
275
+
276
+ const foundAssignee: User[] = await getRepository(User).find({
277
+ ...convertListParams({ filters: assigneeFilter })
278
+ })
279
+
280
+ if (foundAssignee) {
281
+ params.filters.push({
282
+ name: 'assigneeId',
283
+ operator: 'in',
284
+ value: foundAssignee.map((foundIC: User) => foundIC.id),
285
+ relation: false
286
+ })
287
+ }
288
+ }
289
+
255
290
  ////Set default bizplace filter
256
291
  const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
257
292
  if (!bizplaceFilter && typeParam.value[0] !== WORKSHEET_TYPE.BATCH_PICKING) {
@@ -1,20 +1,19 @@
1
- import { Product } from '@things-factory/product-base'
2
- import { OrderInventory, OrderNoGenerator, ORDER_INVENTORY_STATUS, ORDER_TYPES } from '@things-factory/sales-base'
3
- import { Inventory } from '@things-factory/warehouse-base'
1
+ import { EntityManager, getRepository } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { ORDER_INVENTORY_STATUS, ORDER_TYPES, OrderInventory, OrderNoGenerator } from '@things-factory/sales-base'
4
5
  import { Setting } from '@things-factory/setting-base'
5
- import { EntityManager, In, getRepository } from 'typeorm'
6
+ import { Domain } from '@things-factory/shell'
7
+ import { Inventory } from '@things-factory/warehouse-base'
8
+
6
9
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
7
10
  import { Worksheet, WorksheetDetail } from '../../../entities'
8
- import { WorksheetNoGenerator, inventoriesByStrategy } from '../../../utils'
9
- import { User } from '@things-factory/auth-base'
10
- import { Domain } from '@things-factory/shell'
11
- import { generateBatchPickingWorksheetDetailsResolver } from './generate-batch-picking-worksheet-details'
12
- import orderBy from 'lodash/orderBy'
11
+ import { inventoriesByStrategy, WorksheetNoGenerator } from '../../../utils'
13
12
 
14
13
  export const generateBatchPickingWorksheetDetailsByBulkResolver = {
15
14
  async generateBatchPickingWorksheetDetailsByBulk(
16
15
  _: any,
17
- { worksheetId, bizplaceId, selectedItems, pickingStrategy },
16
+ { worksheetId, bizplaceId, selectedItems },
18
17
  context: any
19
18
  ): Promise<Boolean> {
20
19
  const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
@@ -50,7 +49,7 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
50
49
  })
51
50
 
52
51
  await Promise.all(
53
- selectedItems.map(async (oi: OrderInventory) => {
52
+ selectedItems.map(async (oi: OrderInventory & { pickingStrategy: string }) => {
54
53
  try {
55
54
  let pOrderInventories = tx.getRepository(OrderInventory).find({
56
55
  where: {
@@ -72,7 +71,6 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
72
71
  ...oi,
73
72
  worksheetId: worksheet.id,
74
73
  bizplaceId,
75
- pickingStrategy,
76
74
  locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false
77
75
  },
78
76
  domain,
@@ -20,7 +20,7 @@ import { WorksheetNoGenerator } from '../../../utils'
20
20
  export const generatePickingWorksheetDetailsResolver = {
21
21
  async generatePickingWorksheetDetails(
22
22
  _: any,
23
- { bizplaceId, selectedItems, pickingStrategy, worksheetNo, locationSortingRules },
23
+ { bizplaceId, selectedItems, worksheetNo, locationSortingRules },
24
24
  context: any
25
25
  ): Promise<Boolean> {
26
26
  const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
@@ -54,7 +54,6 @@ export const generatePickingWorksheetDetailsResolver = {
54
54
  bizplaceId,
55
55
  worksheetId,
56
56
  selectedItems,
57
- pickingStrategy,
58
57
  locationSortingRules,
59
58
  tx
60
59
  )
@@ -162,6 +161,9 @@ function _composeWorksheetDetails(
162
161
 
163
162
  while (compReleaseQty < record.releaseQty) {
164
163
  const inv = inventories[idx]
164
+
165
+ if (!inv) break
166
+
165
167
  let releaseQty: number = 0
166
168
  let releaseUomValue: number = 0
167
169
 
@@ -0,0 +1,8 @@
1
+ import { gql } from 'apollo-server-koa'
2
+
3
+ export const FindReleaseOrdersByTaskNo = gql`
4
+ type FindReleaseOrdersByTaskNo {
5
+ taskNo: String
6
+ releaseGoods: [ReleaseGood]
7
+ }
8
+ `
@@ -6,6 +6,7 @@ import { DeliveryInfo } from './delivery-info'
6
6
  import { DeliveryOrderInfo } from './delivery-order-info'
7
7
  import { DeliveryWorksheet } from './delivery-worksheet'
8
8
  import { ExecutingWorksheet } from './executing-worksheet'
9
+ import { FindReleaseOrdersByTaskNo } from './find-release-orders-by-task-no'
9
10
  import { GoodsDeliveryNote } from './goods-delivery-note'
10
11
  import { InventoryCheckWorksheet } from './inventory-check-worksheet'
11
12
  import { LoadedWorksheetDetail } from './loaded-worksheet-detail'
@@ -164,10 +165,20 @@ export const Mutation = /* GraphQL */ `
164
165
  worksheetNo: [String!]!
165
166
  ): [Worksheet] @privilege(category: "worksheet_control", privilege: "mutation") @transaction
166
167
 
168
+ undoSerialNumberPacking (
169
+ worksheetDetailName: String!
170
+ inventoryItemId: String!
171
+ ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
172
+
167
173
  activateBatchPicking (
168
174
  worksheetNo: String!
169
175
  ): Worksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
170
176
 
177
+ undoSerialNumberPicking (
178
+ worksheetDetailName: String!
179
+ inventoryItemId: String!
180
+ ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
181
+
171
182
  unload (
172
183
  worksheetDetailName: String!
173
184
  inventory: InventoryPatch!
@@ -185,6 +196,12 @@ export const Mutation = /* GraphQL */ `
185
196
  inventory: InventoryPatch!
186
197
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
187
198
 
199
+ scanSerialNumberUnload (
200
+ worksheetDetailName: String!
201
+ serialNumber: String!
202
+ inventory: InventoryPatch!
203
+ ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
204
+
188
205
  cycleCountAdjustment (
189
206
  cycleCountNo: String!
190
207
  ): Boolean @transaction
@@ -195,6 +212,11 @@ export const Mutation = /* GraphQL */ `
195
212
  inventoryIds: [String]!
196
213
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
197
214
 
215
+ undoSerialNumberUnload (
216
+ worksheetDetailName: String!
217
+ inventoryItemId: String!
218
+ ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
219
+
198
220
  completeUnloadingPartially (
199
221
  arrivalNoticeNo: String!
200
222
  worksheetDetail: [WorksheetDetailPatch!]
@@ -288,7 +310,7 @@ export const Mutation = /* GraphQL */ `
288
310
  palletId: String
289
311
  cartonId: String
290
312
  locationName: String!
291
- releaseQty: Int!
313
+ releaseQty: Float!
292
314
  binLocation: String
293
315
  serialNumber: String
294
316
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
@@ -307,22 +329,26 @@ export const Mutation = /* GraphQL */ `
307
329
  releaseGoodNo: String!
308
330
  productId: String!
309
331
  sortingQty: Float!
332
+ serialNumber: String
310
333
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
311
334
 
312
335
  scanProductSorting (
313
336
  taskNo: String!
314
337
  releaseGoodNo: String!
315
338
  productBarcode: String!
339
+ serialNumber: String
316
340
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
317
341
 
318
342
  packing (
319
343
  worksheetDetailName: String!
320
- releaseQty: Int!
344
+ releaseQty: Float!
345
+ serialNumber: String
321
346
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
322
347
 
323
348
  scanProductPacking (
324
349
  worksheetDetailName: String!
325
350
  productBarcode: String!
351
+ serialNumber: String
326
352
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
327
353
 
328
354
  batchPicking (
@@ -331,7 +357,7 @@ export const Mutation = /* GraphQL */ `
331
357
  palletId: String!
332
358
  locationName: String
333
359
  binLocationName: String
334
- releaseQty: Int!
360
+ releaseQty: Float!
335
361
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
336
362
 
337
363
  scanProductBatchPicking (
@@ -347,7 +373,7 @@ export const Mutation = /* GraphQL */ `
347
373
  worksheetDetailName: String!
348
374
  worksheetType: String!
349
375
  palletId: String!
350
- releaseQty: Int!
376
+ releaseQty: Float!
351
377
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
352
378
 
353
379
  inspecting (
@@ -463,7 +489,7 @@ export const Mutation = /* GraphQL */ `
463
489
  unpacking (
464
490
  worksheetDetailName: String!
465
491
  childProductId: String!
466
- unpackQty: Int!
492
+ unpackQty: Float!
467
493
  unpackUomValue: Float!
468
494
  palletId: String
469
495
  locationName: String
@@ -514,7 +540,7 @@ export const Mutation = /* GraphQL */ `
514
540
  ): Boolean @privilege(category: "worksheet_control", privilege: "mutation") @transaction
515
541
 
516
542
  assignPickingWorker (
517
- worksheetId: String!
543
+ worksheetId: [String]!
518
544
  userId: String!
519
545
  ): Boolean @privilege(category: "worksheet_control", privilege: "mutation") @transaction
520
546
 
@@ -655,16 +681,16 @@ export const Query = /* GraphQL */ `
655
681
  ): [Inventory] @privilege(category: "worksheet", privilege: "query")
656
682
 
657
683
  pickingAssignmentStatusByUsers(
658
- bizplaceId: String!
659
- name: String
660
- email: String
684
+ filters: [Filter],
685
+ pagination: Pagination,
686
+ sortings: [Sorting]
661
687
  ): [PickingAssignmentStatus] @privilege(category: "worksheet", privilege: "query")
662
688
 
663
689
  myPickingAssignmentStatus: MyPickingAssignmentStatus @privilege(category: "worksheet", privilege: "query")
664
690
 
665
691
  recommendPutawayLocation(worksheetDetailName: String!, optCnt: Int): [Location] @privilege(category: "worksheet", privilege: "query")
666
692
 
667
- findReleaseOrdersByTaskNo(taskNo: String!): [ReleaseGood] @privilege(category: "worksheet", privilege: "query") @transaction
693
+ findReleaseOrdersByTaskNo(taskNo: String!): FindReleaseOrdersByTaskNo @privilege(category: "worksheet", privilege: "query") @transaction
668
694
  `
669
695
 
670
696
  export const Types = /* GraphQL */ [
@@ -691,5 +717,6 @@ export const Types = /* GraphQL */ [
691
717
  ProductApproval,
692
718
  WorksheetWithPagination,
693
719
  PickingAssignmentStatus,
694
- MyPickingAssignmentStatus
720
+ MyPickingAssignmentStatus,
721
+ FindReleaseOrdersByTaskNo
695
722
  ]
@@ -3,7 +3,7 @@ import { gql } from 'apollo-server-koa'
3
3
  export const PickingAssignmentStatus = gql`
4
4
  type PickingAssignmentStatus {
5
5
  user: User
6
- pending: [Worksheet]
7
- picking: [Worksheet]
6
+ pending: String
7
+ picking: String
8
8
  }
9
9
  `
@@ -18,12 +18,12 @@ export const WorksheetDetailInfo = gql`
18
18
  expirationDate: String
19
19
  palletQty: Int
20
20
  actualPalletQty: Int
21
- packQty: Int
22
- actualPackQty: Int
21
+ packQty: Float
22
+ actualPackQty: Float
23
23
  adjustedPalletQty: Int
24
24
  adjustedBatchId: String
25
25
  sku: String
26
- qty: Int
26
+ qty: Float
27
27
  uom: String
28
28
  uomValue: Float
29
29
  releaseQty: Float
@@ -59,5 +59,8 @@ export const WorksheetDetailInfo = gql`
59
59
  releaseGood: ReleaseGood
60
60
  actualQty: Int
61
61
  actualUomValue: Float
62
+ manufactureDate: String
63
+ binRemarks: String
64
+ isRequireSerialNumberScanningOutbound: Boolean
62
65
  }
63
66
  `
@@ -2,6 +2,7 @@ import { gql } from 'apollo-server-koa'
2
2
 
3
3
  export const WorksheetInfo = gql`
4
4
  type WorksheetInfo {
5
+ arrivalNotice: ArrivalNotice
5
6
  releaseGood: ReleaseGood
6
7
  returnOrder: ReturnOrder
7
8
  bizplaceName: String
@@ -11,6 +11,7 @@ export const WorksheetPatch = gql`
11
11
  initialBatchId: String
12
12
  status: String
13
13
  truckNo: String
14
+ transportDriver: ObjectRef
14
15
  palletQty: String
15
16
  ownCollection: Boolean
16
17
  cuFlag: String
@@ -41,13 +41,11 @@ export const Mutation = /* GraphQL */ `
41
41
  bizplaceId: String
42
42
  locationSortingRules: [Sorting]
43
43
  selectedItems: [OrderInventoryPatch]!
44
- pickingStrategy: String!
45
44
  ): Boolean @transaction
46
45
 
47
46
  generatePickingWorksheetDetails(
48
47
  bizplaceId: String!
49
48
  selectedItems: [OrderInventoryPatch]!
50
- pickingStrategy: String!
51
49
  worksheetNo: String!
52
50
  locationSortingRules: [Sorting]
53
51
  ): Boolean @transaction
@@ -16,8 +16,8 @@ export const InventoryDetail = gql`
16
16
  zone: String
17
17
  packingType: String
18
18
  packingSize: Float
19
- qty: Int
20
- remainQty: Int
19
+ qty: Float
20
+ remainQty: Float
21
21
  otherRef: String
22
22
  lastSeq: Int
23
23
  uomValue: Float
@@ -23,6 +23,6 @@ export const WorksheetDetailPatch = gql`
23
23
  remark: String
24
24
  issue: String
25
25
  cuFlag: String
26
- actualPackQty: Int
26
+ actualPackQty: Float
27
27
  }
28
28
  `
package/server/index.ts CHANGED
@@ -5,4 +5,9 @@ export * from './entities'
5
5
  export * from './graphql'
6
6
  export * from './graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet'
7
7
  export * from './graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details'
8
+ export * from './graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet'
9
+ export * from './graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details'
10
+ export * from './graphql/resolvers/worksheet/unloading/activate-unloading'
11
+ export * from './graphql/resolvers/worksheet/picking/activate-picking'
8
12
  export * from './migrations'
13
+ export * from './controllers'
package/server/routes.ts CHANGED
@@ -8,7 +8,10 @@ import { renderOrientageDO } from './controllers/render-orientage-do'
8
8
  import { renderOrientageGRN } from './controllers/render-orientage-grn'
9
9
  import { renderRODO } from './controllers/render-ro-do'
10
10
  import { renderSeebuuGRN } from './controllers/render-seebuu-grn'
11
+ import { renderFmGRN } from './controllers/render-fm-grn'
11
12
  import { renderInvoices } from './controllers/render-invoices'
13
+ import { renderPO } from './controllers/render-po'
14
+
12
15
 
13
16
  process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
14
17
  routes.get('/view_document_ro_do/:doNo', async (context, next) => {
@@ -43,6 +46,10 @@ process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
43
46
  context.body = await renderSeebuuGRN(context.params, context)
44
47
  })
45
48
 
49
+ routes.get('/view_fm_grn/:grnNo/:timezoneOffSet', async (context, next) => {
50
+ context.body = await renderFmGRN(context.params, context)
51
+ })
52
+
46
53
  routes.get('/view_job_sheet/:ganNo/:timezoneOffSet', async (context, next) => {
47
54
  context.body = await renderJobSheet(context.params, context)
48
55
  })
@@ -60,4 +67,14 @@ process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
60
67
  context.type = 'application/json'
61
68
  context.body = data
62
69
  })
70
+
71
+ routes.post('/view_purchase_orders/:timezoneOffSet', async (context, next) => {
72
+ let req = context.request.body || {}
73
+ let timezoneOffSet = context.params.timezoneOffSet || 0
74
+
75
+ let data = await renderPO({ req, timezoneOffSet }, context)
76
+
77
+ context.type = 'application/json'
78
+ context.body = data
79
+ })
63
80
  })