@things-factory/worksheet-base 4.0.0-y.0 → 4.0.4

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 (173) hide show
  1. package/dist-server/controllers/ecommerce/ecommerce-controller.js +23 -9
  2. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/index.js +1 -0
  4. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/sellercraft-controller.js +168 -0
  6. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
  7. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +6 -5
  8. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/index.js +1 -0
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +43 -8
  12. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/outbound/packing-worksheet-controller.js +16 -1
  14. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/outbound/picking-worksheet-controller.js +17 -9
  16. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/render-grn.js +192 -0
  18. package/dist-server/controllers/render-grn.js.map +1 -0
  19. package/dist-server/controllers/render-job-sheet.js +51 -35
  20. package/dist-server/controllers/render-job-sheet.js.map +1 -1
  21. package/dist-server/controllers/render-kimeda-grn.js +12 -5
  22. package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
  23. package/dist-server/controllers/render-ro-do.js +19 -5
  24. package/dist-server/controllers/render-ro-do.js.map +1 -1
  25. package/dist-server/controllers/render-seebuu-grn.js +9 -3
  26. package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
  27. package/dist-server/controllers/vas/vas-worksheet-controller.js +75 -14
  28. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  29. package/dist-server/controllers/worksheet-controller.js +61 -8
  30. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  31. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
  32. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +23 -1
  34. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +4 -2
  36. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +25 -0
  38. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +1 -0
  39. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js +4 -4
  40. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/index.js +5 -4
  42. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +2 -2
  44. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +13 -1
  46. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +24 -38
  48. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  49. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +13 -1
  50. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +13 -1
  52. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  53. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +60 -19
  54. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +20 -1
  56. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
  57. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +24 -14
  58. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  59. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js +4 -4
  60. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
  61. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +19 -0
  62. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  63. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +124 -149
  64. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  65. package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js +4 -4
  66. package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
  67. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -1
  68. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  69. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +1 -1
  70. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
  71. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +13 -4
  72. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
  73. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +21 -2
  74. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
  75. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +18 -1
  76. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
  77. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +302 -11
  78. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  79. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
  80. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.js.map +1 -1
  81. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +137 -31
  82. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
  83. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +157 -42
  84. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
  85. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +35 -21
  86. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
  87. package/dist-server/graphql/resolvers/worksheet/worksheet.js +33 -27
  88. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  89. package/dist-server/graphql/resolvers/worksheet/worksheets.js +39 -10
  90. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  91. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +1 -1
  92. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  93. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +3 -2
  94. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
  95. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +3 -2
  96. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
  97. package/dist-server/graphql/types/index.js +2 -1
  98. package/dist-server/graphql/types/index.js.map +1 -1
  99. package/dist-server/graphql/types/pallet/index.js +10 -0
  100. package/dist-server/graphql/types/pallet/index.js.map +1 -0
  101. package/dist-server/graphql/types/worksheet/airwaybill.js +10 -0
  102. package/dist-server/graphql/types/worksheet/airwaybill.js.map +1 -0
  103. package/dist-server/graphql/types/worksheet/index.js +10 -2
  104. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  105. package/dist-server/graphql/types/worksheet/worksheet-info.js +2 -0
  106. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  107. package/dist-server/graphql/types/worksheet-detail/index.js +2 -1
  108. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  109. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
  110. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
  111. package/dist-server/routes.js +10 -6
  112. package/dist-server/routes.js.map +1 -1
  113. package/dist-server/utils/inventory-util.js +7 -3
  114. package/dist-server/utils/inventory-util.js.map +1 -1
  115. package/package.json +16 -15
  116. package/server/controllers/ecommerce/ecommerce-controller.ts +37 -10
  117. package/server/controllers/ecommerce/index.ts +1 -0
  118. package/server/controllers/ecommerce/sellercraft-controller.ts +223 -0
  119. package/server/controllers/inbound/unloading-worksheet-controller.ts +16 -13
  120. package/server/controllers/index.ts +1 -0
  121. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +108 -43
  122. package/server/controllers/outbound/packing-worksheet-controller.ts +21 -4
  123. package/server/controllers/outbound/picking-worksheet-controller.ts +26 -11
  124. package/server/controllers/render-grn.ts +218 -0
  125. package/server/controllers/render-job-sheet.ts +51 -39
  126. package/server/controllers/render-kimeda-grn.ts +16 -12
  127. package/server/controllers/render-ro-do.ts +22 -6
  128. package/server/controllers/render-seebuu-grn.ts +12 -12
  129. package/server/controllers/vas/vas-worksheet-controller.ts +104 -23
  130. package/server/controllers/worksheet-controller.ts +87 -22
  131. package/server/graphql/resolvers/pallet/pallet-outbound.ts +2 -1
  132. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +30 -2
  133. package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +7 -4
  134. package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +30 -0
  135. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +18 -3
  136. package/server/graphql/resolvers/worksheet/index.ts +6 -4
  137. package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +4 -2
  138. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +20 -3
  139. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +30 -49
  140. package/server/graphql/resolvers/worksheet/packing/packing.ts +22 -3
  141. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +22 -3
  142. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +71 -20
  143. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +32 -3
  144. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +31 -17
  145. package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +4 -3
  146. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +31 -3
  147. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +143 -175
  148. package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +5 -4
  149. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +5 -2
  150. package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +1 -1
  151. package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +22 -9
  152. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +27 -4
  153. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +23 -2
  154. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +452 -14
  155. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +36 -1
  156. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +8 -2
  157. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +185 -56
  158. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +210 -54
  159. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +64 -32
  160. package/server/graphql/resolvers/worksheet/worksheet.ts +67 -62
  161. package/server/graphql/resolvers/worksheet/worksheets.ts +51 -13
  162. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +1 -0
  163. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +2 -1
  164. package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +2 -1
  165. package/server/graphql/types/index.ts +2 -1
  166. package/server/graphql/types/pallet/index.ts +6 -0
  167. package/server/graphql/types/worksheet/airwaybill.ts +7 -0
  168. package/server/graphql/types/worksheet/index.ts +10 -2
  169. package/server/graphql/types/worksheet/worksheet-info.ts +2 -0
  170. package/server/graphql/types/worksheet-detail/index.ts +2 -1
  171. package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
  172. package/server/routes.ts +11 -6
  173. package/server/utils/inventory-util.ts +14 -5
@@ -1,20 +1,40 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Bizplace } from '@things-factory/biz-base'
3
- import { Inventory } from '@things-factory/warehouse-base'
4
- import { OrderVas, VasOrder } from '@things-factory/sales-base'
5
+ import {
6
+ OrderVas,
7
+ VasOrder
8
+ } from '@things-factory/sales-base'
5
9
  import { Domain } from '@things-factory/shell'
6
- import { EntityManager } from 'typeorm'
7
- import { Worksheet, WorksheetDetail } from '../../../../../entities'
8
- import { dismissInventory, getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'
10
+ import { Inventory } from '@things-factory/warehouse-base'
11
+
12
+ import {
13
+ Worksheet,
14
+ WorksheetDetail
15
+ } from '../../../../../entities'
9
16
  import {
17
+ getWorksheetDetailByName,
18
+ updateRelatedOrderVas
19
+ } from '../common-utils'
20
+ import {
21
+ FeaturedInventoryInterface,
10
22
  OperationGuideInterface,
11
23
  PackingUnits,
12
- PalletChangesInterface,
13
24
  RefOrderType,
14
25
  RepackagingGuide,
15
- RepackedInvInfo
26
+ RepackedInvInfo,
27
+ TemporaryPalletChangesInterface
16
28
  } from '../interfaces'
17
29
 
30
+ /** STEPS TO UNDO REPACKAGING
31
+ * 1. get the pallet id to undo (pallet id must be the LV one and not the parent)
32
+ * 2. revert the qty of repackedFrom into the original inventory and featuredInv (if applicable)
33
+ * 3. remove the repackedInv for undo item
34
+ * 4. update the requiredPkgQty
35
+ *
36
+ */
37
+
18
38
  export const undoRepackagingResolver = {
19
39
  async undoRepackaging(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: any) {
20
40
  /**
@@ -30,37 +50,49 @@ export const undoRepackagingResolver = {
30
50
  let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)
31
51
  let operationGuideData: RepackagingGuide = operationGuide.data
32
52
  let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs
53
+ let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs
33
54
  let undoInventory: RepackedInvInfo = repackedInvs.find((ri: RepackedInvInfo) => ri.palletId === toPalletId)
34
55
  if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)
35
56
 
36
57
  const packingUnit: string = operationGuideData.packingUnit
37
58
  const stdAmount: number = operationGuideData.stdAmount
38
59
 
39
- undoInventory.repackedFrom = undoInventory.repackedFrom.filter(
40
- (rf: PalletChangesInterface) => rf.fromPalletId !== fromPalletId
41
- )
60
+ // undoInventory.repackedFrom = undoInventory.repackedFrom.filter(
61
+ // (rf: TemporaryPalletChangesInterface) => rf.fromPalletId !== fromPalletId
62
+ // )
42
63
 
43
64
  // 완전히 Repacked 상태인 pallet count
44
- const repackedPkgQty: number =
45
- undoInventory.repackedFrom.reduce((totalAmount: number, rf: PalletChangesInterface) => {
46
- const amount: number = packingUnit === PackingUnits.QTY ? rf.reducedQty : rf.reducedUomValue
47
- totalAmount += amount
48
- return totalAmount
49
- }, 0) / stdAmount
65
+ // const repackedPkgQty: number =
66
+ // undoInventory.repackedFrom.reduce((totalAmount: number, rf: TemporaryPalletChangesInterface) => {
67
+ // const amount: number = packingUnit === PackingUnits.QTY ? rf.reducedUnitQty : rf.reducedUomValue
68
+ // totalAmount += amount
69
+ // return totalAmount
70
+ // }, 0) / stdAmount
50
71
 
51
72
  // Undo를 발생한 수량 차이를 계산
52
- undoInventory.repackedPkgQty = repackedPkgQty
53
-
54
- // Pallet 전체가 취소된 경우
55
- let updatedRepackedInvs: RepackedInvInfo[]
56
- if (!undoInventory.repackedFrom?.length) {
57
- updatedRepackedInvs = repackedInvs.filter((ri: RepackedInvInfo) => ri.palletId !== toPalletId)
58
- } else {
59
- updatedRepackedInvs = repackedInvs.map((ri: RepackedInvInfo) => {
60
- if (ri.palletId === toPalletId) ri = undoInventory
61
- return ri
62
- })
63
- }
73
+ // undoInventory.repackedPkgQty = repackedPkgQty
74
+
75
+ const updatedRepackedInvs: RepackedInvInfo[] = repackedInvs.filter(
76
+ (ri: RepackedInvInfo) => ri.palletId !== toPalletId
77
+ )
78
+
79
+ const updatedFeaturedInvs: FeaturedInventoryInterface[] = featuredInvs.reduce(
80
+ (inventories: FeaturedInventoryInterface[], currInv: FeaturedInventoryInterface) => {
81
+ undoInventory.repackedFrom.forEach(undoInv => {
82
+ if (undoInv.fromPalletId == currInv.palletId) {
83
+ if (packingUnit == PackingUnits.QTY) {
84
+ currInv.currentUnitQty += undoInv.reducedUnitQty
85
+ } else if (packingUnit == PackingUnits.UOM) {
86
+ currInv.currentUomValue += undoInv.reducedUomValue
87
+ }
88
+ }
89
+ })
90
+
91
+ inventories.push(currInv)
92
+ return inventories
93
+ },
94
+ []
95
+ )
64
96
 
65
97
  const requiredPackageQty: number = await getRequiredPackageQty(
66
98
  tx,
@@ -74,17 +106,17 @@ export const undoRepackagingResolver = {
74
106
  const repackedPackageQty: number = getRepackedPackageQty(updatedRepackedInvs)
75
107
 
76
108
  operationGuide.data.requiredPackageQty = requiredPackageQty - repackedPackageQty
109
+ operationGuide.data.featuredInvs = updatedFeaturedInvs
77
110
  operationGuide.data.repackedInvs = updatedRepackedInvs
78
111
 
79
112
  if (!(refOrder instanceof VasOrder)) {
80
- // const palletChanges: PalletChangesInterface[] = operationGuide.data.repackedInvs
113
+ // const palletChanges: TemporaryPalletChangesInterface[] = operationGuide.data.repackedInvs
81
114
  // .map((ri: RepackedInvInfo) => ri.repackedFrom)
82
115
  // .flat()
83
116
 
84
- const palletChanges: PalletChangesInterface[] = []
85
- await dismissInventory(tx, wsd, targetVas, palletChanges, fromPalletId)
117
+ const palletChanges: TemporaryPalletChangesInterface[] = []
118
+ // await dismissInventory(tx, wsd, targetVas, palletChanges, fromPalletId)
86
119
  }
87
-
88
120
  // Update every order vas to share same operation guide
89
121
  await updateRelatedOrderVas(tx, domain, bizplace, wsd, targetVas, operationGuide, user)
90
122
  }
@@ -1,11 +1,12 @@
1
- import { MarketplaceOrder } from '@things-factory/marketplace-base'
2
- import { OrderInventory, OrderProduct, OrderVas, ORDER_INVENTORY_STATUS } from '@things-factory/sales-base'
3
- import { Domain } from '@things-factory/shell'
4
1
  import { Equal, getRepository, Not } from 'typeorm'
2
+
3
+ import { MarketplaceOrder, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
4
+ import { ORDER_INVENTORY_STATUS, OrderInventory, OrderProduct, OrderVas } from '@things-factory/sales-base'
5
+ import { Setting } from '@things-factory/setting-base'
6
+ import { Domain } from '@things-factory/shell'
7
+
5
8
  import { WORKSHEET_TYPE } from '../../../constants'
6
9
  import { Worksheet } from '../../../entities'
7
- import { Setting } from '@things-factory/setting-base'
8
- import orderBy from 'lodash/orderBy'
9
10
 
10
11
  interface WorksheetInterface extends Worksheet {
11
12
  orderProducts: OrderProduct[]
@@ -82,34 +83,25 @@ export const worksheetResolver = {
82
83
  })
83
84
  }
84
85
 
85
-
86
86
  if (worksheet.type === WORKSHEET_TYPE.BATCH_PICKING) {
87
- // let orderInventories: OrderInventory[] = await getRepository(OrderInventory).find({
88
- // where: {
89
- // domain,
90
- // bizplace: worksheet.bizplace,
91
- // refWorksheetId: worksheet.id
92
- // },
93
- // relations: ['releaseGood', 'inventory', 'product', 'inventory.location', 'bizplace']
94
- // })
95
-
96
- let qbOrderInventories = getRepository(OrderInventory).createQueryBuilder('oi')
97
- .leftJoinAndSelect('oi.releaseGood', 'releaseGood')
98
- .leftJoinAndSelect('oi.inventory', 'inventory')
99
- .leftJoinAndSelect('oi.product', 'product')
100
- .leftJoinAndSelect('inventory.location', 'location')
101
- .leftJoinAndSelect('oi.bizplace', 'bizplace')
102
- .where('"oi"."domain_id" = :domain')
103
- .andWhere('"oi"."bizplace_id" = :bizplace')
104
- .andWhere('"oi"."ref_worksheet_id" = :refWorksheetId')
105
- .setParameters({
106
- domain: domain.id,
107
- bizplace: worksheet.bizplace.id,
108
- refWorksheetId: worksheet.id
109
- })
110
-
87
+ let qbOrderInventories = getRepository(OrderInventory)
88
+ .createQueryBuilder('oi')
89
+ .leftJoinAndSelect('oi.releaseGood', 'releaseGood')
90
+ .leftJoinAndSelect('oi.inventory', 'inventory')
91
+ .leftJoinAndSelect('oi.product', 'product')
92
+ .leftJoinAndSelect('inventory.location', 'location')
93
+ .leftJoinAndSelect('oi.bizplace', 'bizplace')
94
+ .where('"oi"."domain_id" = :domain')
95
+ .andWhere('"oi"."bizplace_id" = :bizplace')
96
+ .andWhere('"oi"."ref_worksheet_id" = :refWorksheetId')
97
+ .setParameters({
98
+ domain: domain.id,
99
+ bizplace: worksheet.bizplace.id,
100
+ refWorksheetId: worksheet.id
101
+ })
102
+
111
103
  let sortingSetting: Setting = await pWorksheetPickingItemSorting
112
- if(sortingSetting?.value){
104
+ if (sortingSetting?.value) {
113
105
  let settingValue = JSON.parse(sortingSetting.value)
114
106
  for (const key in settingValue) {
115
107
  qbOrderInventories.addOrderBy(`location.${key}`, settingValue[key] ? 'ASC' : 'DESC')
@@ -121,35 +113,26 @@ export const worksheetResolver = {
121
113
  }
122
114
 
123
115
  if (worksheet?.releaseGood?.id) {
124
- // worksheet.orderInventories = await getRepository(OrderInventory).find({
125
- // where: {
126
- // domain,
127
- // bizplace: worksheet.bizplace,
128
- // releaseGood: worksheet.releaseGood,
129
- // status: Not(Equal(ORDER_INVENTORY_STATUS.CANCELLED))
130
- // },
131
- // relations: ['product', 'inventory', 'inventory.location']
132
- // })
133
-
134
- let qbOrderInventories = getRepository(OrderInventory).createQueryBuilder('oi')
135
- .leftJoinAndSelect('oi.releaseGood', 'releaseGood')
136
- .leftJoinAndSelect('oi.inventory', 'inventory')
137
- .leftJoinAndSelect('oi.product', 'product')
138
- .leftJoinAndSelect('inventory.location', 'location')
139
- .leftJoinAndSelect('oi.bizplace', 'bizplace')
140
- .where('"oi"."domain_id" = :domain')
141
- .andWhere('"oi"."bizplace_id" = :bizplace')
142
- .andWhere('"oi"."release_good_id" = :releaseGood')
143
- .andWhere('"oi"."status" != :status')
144
- .setParameters({
145
- domain: domain.id,
146
- bizplace: worksheet.bizplace.id,
147
- releaseGood: worksheet.releaseGood.id,
148
- status: ORDER_INVENTORY_STATUS.CANCELLED
149
- })
116
+ let qbOrderInventories = getRepository(OrderInventory)
117
+ .createQueryBuilder('oi')
118
+ .leftJoinAndSelect('oi.releaseGood', 'releaseGood')
119
+ .leftJoinAndSelect('oi.inventory', 'inventory')
120
+ .leftJoinAndSelect('oi.product', 'product')
121
+ .leftJoinAndSelect('inventory.location', 'location')
122
+ .leftJoinAndSelect('oi.bizplace', 'bizplace')
123
+ .where('"oi"."domain_id" = :domain')
124
+ .andWhere('"oi"."bizplace_id" = :bizplace')
125
+ .andWhere('"oi"."release_good_id" = :releaseGood')
126
+ .andWhere('"oi"."status" NOT IN (:...statuses)')
127
+ .setParameters({
128
+ domain: domain.id,
129
+ bizplace: worksheet.bizplace.id,
130
+ releaseGood: worksheet.releaseGood.id,
131
+ statuses: [ORDER_INVENTORY_STATUS.CANCELLED, ORDER_INVENTORY_STATUS.REPLACED]
132
+ })
150
133
 
151
134
  let sortingSetting: Setting = await pWorksheetPickingItemSorting
152
- if(sortingSetting?.value){
135
+ if (sortingSetting?.value) {
153
136
  let settingValue = JSON.parse(sortingSetting.value)
154
137
  for (const key in settingValue) {
155
138
  qbOrderInventories.addOrderBy(`location.${key}`, settingValue[key] ? 'ASC' : 'DESC')
@@ -159,10 +142,32 @@ export const worksheetResolver = {
159
142
  let orderInventories: OrderInventory[] = await qbOrderInventories.getMany()
160
143
  worksheet.orderInventories = orderInventories
161
144
 
162
- worksheet.marketplaceOrder = await getRepository(MarketplaceOrder).findOne({
163
- where: { releaseOrderId: worksheet.releaseGood.id },
164
- relations: ['marketplaceOrderItems', 'marketplaceStore']
165
- })
145
+ if (worksheet.releaseGood.type == 'b2c') {
146
+ worksheet.marketplaceOrder = await getRepository(MarketplaceOrder).findOne({
147
+ where: { orderNo: worksheet.releaseGood.refNo },
148
+ relations: ['marketplaceOrderItems', 'marketplaceStore']
149
+ })
150
+
151
+ if (worksheet.marketplaceOrder) {
152
+ let marketplaceOrderShipping: MarketplaceOrderShipping
153
+ if (worksheet.marketplaceOrder.isSplitted) {
154
+ marketplaceOrderShipping = await getRepository(MarketplaceOrderShipping).findOne({
155
+ where: { subOrderNoRef: worksheet.releaseGood.refNo2 }
156
+ })
157
+ } else {
158
+ marketplaceOrderShipping = await getRepository(MarketplaceOrderShipping).findOne({
159
+ where: { orderNoRef: worksheet.releaseGood.refNo }
160
+ })
161
+ }
162
+
163
+ worksheet.marketplaceOrder.trackingNo = marketplaceOrderShipping.ownTrackingNo
164
+ ? marketplaceOrderShipping.ownTrackingNo
165
+ : marketplaceOrderShipping.trackingNo
166
+ worksheet.marketplaceOrder.shippingProvider = marketplaceOrderShipping.ownTransporter
167
+ ? marketplaceOrderShipping.ownTransporter
168
+ : marketplaceOrderShipping.transporter
169
+ }
170
+ }
166
171
 
167
172
  worksheet.orderVass = await getRepository(OrderVas).find({
168
173
  where: {
@@ -1,10 +1,11 @@
1
- import { getPermittedBizplaceIds } from '@things-factory/biz-base'
1
+ import { Brackets, getRepository, SelectQueryBuilder } from 'typeorm'
2
+
2
3
  import { User } from '@things-factory/auth-base'
3
- import { Domain } from '@things-factory/shell'
4
+ import { getPermittedBizplaceIds } from '@things-factory/biz-base'
4
5
  import { ArrivalNotice, InventoryCheck, ReleaseGood, ReturnOrder } from '@things-factory/sales-base'
5
- import { buildQuery, convertListParams, ListParam } from '@things-factory/shell'
6
+ import { buildQuery, convertListParams, Domain, ListParam } from '@things-factory/shell'
7
+
6
8
  import { WORKSHEET_TYPE } from '../../../constants'
7
- import { Brackets, getRepository, SelectQueryBuilder } from 'typeorm'
8
9
  import { Worksheet } from '../../../entities'
9
10
 
10
11
  export const worksheetsResolver = {
@@ -60,6 +61,38 @@ export const worksheetsResolver = {
60
61
  }
61
62
  }
62
63
 
64
+ const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')
65
+ let tzOffset = 0
66
+ if (tzOffsetIdx >= 0) {
67
+ tzOffset = params.filters[tzOffsetIdx].value
68
+ params.filters.splice(tzOffsetIdx, 1)
69
+ }
70
+
71
+ const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
72
+ if (fromDateParamIdx >= 0) {
73
+ let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
74
+ params.filters.splice(fromDateParamIdx, 1)
75
+
76
+ params.filters.push({
77
+ name: 'createdAt',
78
+ operator: 'gte',
79
+ value: fromDateVal.toISOString(),
80
+ relation: false
81
+ })
82
+ }
83
+ const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
84
+ if (toDateParamIdx >= 0) {
85
+ let toDateVal = new Date(params.filters[toDateParamIdx].value)
86
+ params.filters.splice(toDateParamIdx, 1)
87
+
88
+ params.filters.push({
89
+ name: 'createdAt',
90
+ operator: 'lt',
91
+ value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
92
+ relation: false
93
+ })
94
+ }
95
+
63
96
  ////For outbound worksheet filter
64
97
  const releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')
65
98
  const releaseGoodRefNoParam = params.filters.find(param => param.name === 'releaseGoodRefNo')
@@ -255,15 +288,7 @@ export const worksheetsResolver = {
255
288
  )
256
289
  }
257
290
 
258
- qb.addSelect(subQuery => {
259
- return subQuery
260
- .select('COALESCE("ccd".rank, 99999)', 'rank')
261
- .from('common_code_details', 'ccd')
262
- .innerJoin('ccd.commonCode', 'cc')
263
- .where('"ccd"."name" = "ws"."status"')
264
- .andWhere('"ccd"."domain_id" = "ws"."domain_id"')
265
- .andWhere('"cc"."name" = \'WORKSHEET_STATUS\'')
266
- }, 'rank')
291
+ qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
267
292
  qb.leftJoinAndSelect('ws.domain', 'domain')
268
293
  qb.leftJoinAndSelect('ws.bizplace', 'bizplace')
269
294
  qb.leftJoinAndSelect('ws.arrivalNotice', 'arrivalNotice')
@@ -274,6 +299,19 @@ export const worksheetsResolver = {
274
299
  qb.leftJoinAndSelect('ws.assignee', 'assignee')
275
300
  qb.leftJoinAndSelect('ws.creator', 'creator')
276
301
  qb.leftJoinAndSelect('ws.updater', 'updater')
302
+ qb.leftJoin(
303
+ subQuery => {
304
+ return subQuery
305
+ .select(`ccd.rank`, 'rank')
306
+ .addSelect(`ccd.name`, 'status')
307
+ .from(`common_code_details`, 'ccd')
308
+ .innerJoin(`ccd.commonCode`, 'cc')
309
+ .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
310
+ .andWhere(`cc.name = 'WORKSHEET_STATUS'`)
311
+ },
312
+ 'cc',
313
+ 'cc.status = ws.status'
314
+ )
277
315
 
278
316
  ////Add sorting conditions
279
317
  const arrChildSortData = ['bizplace', 'arrivalNotice', 'releaseGood', 'returnOrder', 'inventoryCheck']
@@ -75,6 +75,7 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
75
75
  pickingStrategy,
76
76
  locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false
77
77
  },
78
+ domain,
78
79
  tx
79
80
  )
80
81
 
@@ -11,7 +11,7 @@ import { WorksheetNoGenerator } from '../../../utils'
11
11
  export const generateReleaseGoodWorksheetDetailsResolver = {
12
12
  async generateReleaseGoodWorksheetDetails(
13
13
  _: any,
14
- { worksheetNo, batchId, productId, packingType, worksheetDetails },
14
+ { worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },
15
15
  context: any
16
16
  ): Promise<void> {
17
17
  const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
@@ -59,6 +59,7 @@ export const generateReleaseGoodWorksheetDetailsResolver = {
59
59
  status: ORDER_INVENTORY_STATUS.READY_TO_PICK,
60
60
  product: await tx.getRepository(Product).findOne(productId),
61
61
  packingType,
62
+ packingSize,
62
63
  creator: user,
63
64
  updater: user
64
65
  })
@@ -8,7 +8,7 @@ import { Worksheet, WorksheetDetail } from '../../../entities'
8
8
  export const worksheetDetailsByProductGroupResolver = {
9
9
  async worksheetDetailsByProductGroup(
10
10
  _: any,
11
- { worksheetNo, batchId, productName, productSku, packingType },
11
+ { worksheetNo, batchId, productName, productSku, packingType, packingSize },
12
12
  context: any
13
13
  ) {
14
14
  const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
@@ -34,6 +34,7 @@ export const worksheetDetailsByProductGroupResolver = {
34
34
  .andWhere('"PROD"."name" = :productName', { productName: productName })
35
35
  .andWhere('"PROD"."sku" = :productSku', { productSku: productSku })
36
36
  .andWhere('"ORD_INV"."packing_type" = :packingType', { packingType: packingType })
37
+ .andWhere('"ORD_INV"."packing_size" = :packingSize', { packingSize: packingSize })
37
38
 
38
39
  if (bizplaceId && releaseGoodId) {
39
40
  qb.andWhere('"WSD"."bizplace_id" = :bizplaceId', { bizplaceId: bizplaceId })
@@ -1,9 +1,10 @@
1
+ import * as Pallet from './pallet'
1
2
  import * as Worksheet from './worksheet'
2
3
  import * as WorksheetDetail from './worksheet-detail'
3
4
  import * as WorksheetMovement from './worksheet-movement'
4
5
 
5
6
  export const queries = [Worksheet.Query, WorksheetDetail.Query, WorksheetMovement.Query]
6
7
 
7
- export const mutations = [Worksheet.Mutation, WorksheetDetail.Mutation, WorksheetMovement.Mutation]
8
+ export const mutations = [Worksheet.Mutation, WorksheetDetail.Mutation, WorksheetMovement.Mutation, Pallet.Mutation]
8
9
 
9
10
  export const types = [...Worksheet.Types, ...WorksheetDetail.Types, ...WorksheetMovement.Types]
@@ -0,0 +1,6 @@
1
+ export const Mutation = /* GraphQL */ `
2
+ palletOutbound(
3
+ refOrderNo: String!
4
+ patches: [PalletPatch]!
5
+ ): Boolean @transaction
6
+ `
@@ -0,0 +1,7 @@
1
+ import { gql } from 'apollo-server-koa'
2
+
3
+ export const AirwayBill = gql`
4
+ type AirwayBill {
5
+ airwayBill: String
6
+ }
7
+ `
@@ -1,3 +1,4 @@
1
+ import { AirwayBill } from './airwaybill'
1
2
  import { ArrivalNoticeWorksheet } from './arrival-notice-worksheet'
2
3
  import { ContactPointInfo } from './contact-point-info'
3
4
  import { CycleCountWorksheet } from './cycle-count-worksheet'
@@ -60,6 +61,10 @@ export const Mutation = /* GraphQL */ `
60
61
  releaseGoodNo: String!
61
62
  ): ReleaseGoodWorksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
62
63
 
64
+ fetchSellercraftAirwayBill (
65
+ releaseGoodNo: String!
66
+ ): AirwayBill @privilege(category: "worksheet_control", privilege: "mutation") @transaction
67
+
63
68
  generateSortingWorksheet (
64
69
  worksheetNo: String!
65
70
  ): ReleaseGoodWorksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
@@ -77,6 +82,7 @@ export const Mutation = /* GraphQL */ `
77
82
  executionDate: String!
78
83
  customerId: String!
79
84
  orderInventoryIds: [String]
85
+ orderInventories: [OrderInventoryPatch]
80
86
  limit: Int
81
87
  ): CycleCountWorksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
82
88
 
@@ -138,7 +144,7 @@ export const Mutation = /* GraphQL */ `
138
144
  ): Boolean @transaction
139
145
 
140
146
  worksheetDetailsByProductGroup (
141
- worksheetNo: String!, batchId: String!, productName: String!, packingType: String!
147
+ worksheetNo: String!, batchId: String!, productName: String!, packingType: String!, packingSize: Float!
142
148
  ): WorksheetDetailList @transaction
143
149
 
144
150
  activatePicking (
@@ -502,6 +508,7 @@ export const Mutation = /* GraphQL */ `
502
508
  batchId: String!
503
509
  productId: String!
504
510
  packingType: String!
511
+ packingSize: Float!
505
512
  ): Boolean @privilege(category: "worksheet_control", privilege: "mutation") @transaction
506
513
 
507
514
  assignPickingWorker (
@@ -565,7 +572,7 @@ export const Query = /* GraphQL */ `
565
572
 
566
573
  packingWorksheet (
567
574
  releaseGoodNo: String!
568
- ): ExecutingWorksheet @privilege(category: "worksheet", privilege: "query")
575
+ ): ExecutingWorksheet @privilege(category: "worksheet", privilege: "query") @transaction
569
576
 
570
577
  vasWorksheet (
571
578
  orderNo: String!, orderType: String!
@@ -657,6 +664,7 @@ export const Query = /* GraphQL */ `
657
664
 
658
665
  export const Types = /* GraphQL */ [
659
666
  Worksheet,
667
+ AirwayBill,
660
668
  NewWorksheet,
661
669
  WorksheetPatch,
662
670
  WorksheetList,
@@ -10,6 +10,8 @@ export const WorksheetInfo = gql`
10
10
  customerCompanyDomainId: String
11
11
  bizplace: Bizplace
12
12
  containerNo: String
13
+ airwayBill: String
14
+ invoice: String
13
15
  shippingProvider: String
14
16
  trackingNo: String
15
17
  platform: String
@@ -24,6 +24,7 @@ export const Mutation = /* GraphQL */ `
24
24
  batchId: String!
25
25
  productId: String!
26
26
  packingType: String!
27
+ packingSize: Float!
27
28
  worksheetDetails: [NewWorksheetDetail]
28
29
  ): Boolean @transaction
29
30
 
@@ -51,7 +52,7 @@ export const Query = /* GraphQL */ `
51
52
  checkProgressingPallet(palletId: String!): Boolean @transaction
52
53
  generatePalletId(targets: [PalletInfo], type: String!): [InventoryDetail] @transaction
53
54
  generateCartonId(printQty: Int!, type: String!): [InventoryDetail]
54
- worksheetDetailsByProductGroup(worksheetNo: String!, batchId: String!, productName: String!, productSku: String!, packingType: String!): WorksheetDetailList @transaction
55
+ worksheetDetailsByProductGroup(worksheetNo: String!, batchId: String!, productName: String!, productSku: String!, packingType: String!, packingSize: Float!): WorksheetDetailList @transaction
55
56
  `
56
57
 
57
58
  export const Types = [
@@ -15,6 +15,7 @@ export const InventoryDetail = gql`
15
15
  warehouse: Warehouse
16
16
  zone: String
17
17
  packingType: String
18
+ packingSize: Float
18
19
  qty: Int
19
20
  remainQty: Int
20
21
  otherRef: String
package/server/routes.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { renderRODO } from './controllers/render-ro-do'
2
- import { renderManualDO } from './controllers/render-manual-do'
3
1
  import { renderElcclGRN } from './controllers/render-elccl-grn'
2
+ import { renderGRN } from './controllers/render-grn'
3
+ import { renderJobSheet } from './controllers/render-job-sheet'
4
4
  import { renderKimedaGRN } from './controllers/render-kimeda-grn'
5
- import { renderSeebuuGRN } from './controllers/render-seebuu-grn'
6
- import { renderOrientageGRN } from './controllers/render-orientage-grn'
5
+ import { renderManualDO } from './controllers/render-manual-do'
7
6
  import { renderOrientageDO } from './controllers/render-orientage-do'
8
- import { renderJobSheet } from './controllers/render-job-sheet'
7
+ import { renderOrientageGRN } from './controllers/render-orientage-grn'
8
+ import { renderRODO } from './controllers/render-ro-do'
9
+ import { renderSeebuuGRN } from './controllers/render-seebuu-grn'
9
10
 
10
11
  process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
11
12
  routes.get('/view_document_ro_do/:doNo', async (context, next) => {
@@ -24,7 +25,11 @@ process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
24
25
  context.body = await renderElcclGRN(context.params, context)
25
26
  })
26
27
 
27
- routes.get('/view_kimeda_grn/:grnNo', async (context, next) => {
28
+ routes.get('/view_grn/:grnNo/:timezoneOffSet', async (context, next) => {
29
+ context.body = await renderGRN(context.params, context)
30
+ })
31
+
32
+ routes.get('/view_kimeda_grn/:grnNo/:timezoneOffSet', async (context, next) => {
28
33
  context.body = await renderKimedaGRN(context.params, context)
29
34
  })
30
35