@things-factory/worksheet-base 4.3.108 → 4.3.110

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 (85) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +73 -58
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +6 -7
  4. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/loading-worksheet-controller.js +4 -10
  6. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/packing-worksheet-controller.js +24 -33
  8. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +48 -78
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +14 -12
  12. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/render-orientage-do.js +1 -1
  14. package/dist-server/controllers/render-orientage-do.js.map +1 -1
  15. package/dist-server/controllers/render-orientage-grn.js +1 -1
  16. package/dist-server/controllers/render-orientage-grn.js.map +1 -1
  17. package/dist-server/controllers/vas/vas-worksheet-controller.js +2 -1
  18. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  19. package/dist-server/controllers/worksheet-controller.js +9 -7
  20. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  21. package/dist-server/entities/index.js +2 -3
  22. package/dist-server/entities/index.js.map +1 -1
  23. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +62 -29
  24. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +0 -6
  26. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js +39 -43
  28. package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +39 -1
  30. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
  32. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +1 -2
  34. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +1 -4
  36. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +3 -3
  38. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +51 -1
  40. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -3
  42. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/transfer.js +9 -9
  44. package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +1 -1
  46. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
  48. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  49. package/dist-server/graphql/resolvers/worksheet/worksheets.js +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
  52. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
  53. package/dist-server/graphql/types/worksheet-detail/index.js +0 -1
  54. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  55. package/dist-server/utils/inventory-util.js +98 -1
  56. package/dist-server/utils/inventory-util.js.map +1 -1
  57. package/package.json +18 -17
  58. package/server/controllers/inbound/unloading-worksheet-controller.ts +86 -72
  59. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +6 -7
  60. package/server/controllers/outbound/loading-worksheet-controller.ts +3 -9
  61. package/server/controllers/outbound/packing-worksheet-controller.ts +36 -41
  62. package/server/controllers/outbound/picking-worksheet-controller.ts +66 -98
  63. package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
  64. package/server/controllers/render-orientage-do.ts +1 -1
  65. package/server/controllers/render-orientage-grn.ts +12 -12
  66. package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
  67. package/server/controllers/worksheet-controller.ts +12 -15
  68. package/server/entities/index.ts +2 -2
  69. package/server/entities/warehouse-bizplace-onhand-inventory.ts +63 -29
  70. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -6
  71. package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +50 -52
  72. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +43 -1
  73. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
  74. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +1 -3
  75. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +2 -4
  76. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +3 -3
  77. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +57 -1
  78. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -3
  79. package/server/graphql/resolvers/worksheet/transfer.ts +16 -18
  80. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +1 -1
  81. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +2 -3
  82. package/server/graphql/resolvers/worksheet/worksheets.ts +1 -1
  83. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +1 -4
  84. package/server/graphql/types/worksheet-detail/index.ts +0 -1
  85. package/server/utils/inventory-util.ts +126 -1
@@ -19,13 +19,12 @@ import {
19
19
  InventoryNoGenerator,
20
20
  Location,
21
21
  Pallet,
22
- Warehouse,
23
- generateInventoryHistory
22
+ Warehouse
24
23
  } from '@things-factory/warehouse-base'
25
24
 
26
25
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
27
26
  import { Worksheet, WorksheetDetail } from '../../../../entities'
28
- import { WorksheetNoGenerator } from '../../../../utils'
27
+ import { generateInventoryHistory, WorksheetNoGenerator } from '../../../../utils'
29
28
  import {
30
29
  OperationGuideInterface,
31
30
  PackingUnits,
@@ -242,7 +242,7 @@ export const worksheetsResolver = {
242
242
  params.filters.findIndex(item => item.name == 'executionDate'),
243
243
  1
244
244
  )
245
- arrFilters.push({ ...executionDateParam, name: 'executionDate' })
245
+ arrFilters.push({ ...releaseGoodRefNoParam, name: 'refNo' })
246
246
  }
247
247
  const foundInventoryCheck: InventoryCheck[] = await getRepository(InventoryCheck).find({
248
248
  ...convertListParams({ filters: arrFilters })
@@ -19,7 +19,7 @@ import { WorksheetNoGenerator } from '../../../utils'
19
19
  export const regenerateReleaseGoodWorksheetDetailsResolver = {
20
20
  async regenerateReleaseGoodWorksheetDetails(
21
21
  _: any,
22
- { worksheetNo, batchId, productId, productDetailId, packingType, packingSize, orderProductId, worksheetDetails },
22
+ { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails },
23
23
  context: any
24
24
  ): Promise<void> {
25
25
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
@@ -30,7 +30,6 @@ export const regenerateReleaseGoodWorksheetDetailsResolver = {
30
30
  worksheetNo,
31
31
  batchId,
32
32
  productId,
33
- productDetailId,
34
33
  packingType,
35
34
  packingSize,
36
35
  orderProductId,
@@ -46,7 +45,6 @@ export async function regenerateReleaseGoodWorksheetDetails(
46
45
  worksheetNo: string,
47
46
  batchId: string,
48
47
  productId: string,
49
- productDetailId: string,
50
48
  packingType: string,
51
49
  packingSize: number,
52
50
  orderProductId: string,
@@ -117,7 +115,6 @@ export async function regenerateReleaseGoodWorksheetDetails(
117
115
  batchIdRef: inventory.batchIdRef,
118
116
  status: ORDER_INVENTORY_STATUS.READY_TO_PICK,
119
117
  product: await tx.getRepository(Product).findOne(productId),
120
- productDetail: productDetailId,
121
118
  packingType,
122
119
  packingSize,
123
120
  orderProduct: targetProduct,
@@ -32,7 +32,6 @@ export const Mutation = /* GraphQL */ `
32
32
  worksheetNo: String!
33
33
  batchId: String!
34
34
  productId: String!
35
- productDetailId: String!
36
35
  packingType: String!
37
36
  packingSize: Float!
38
37
  orderProductId: String!
@@ -4,9 +4,134 @@ import { User } from '@things-factory/auth-base'
4
4
  import { Bizplace } from '@things-factory/biz-base'
5
5
  import { Product } from '@things-factory/product-base'
6
6
  import { Domain } from '@things-factory/shell'
7
- import { Inventory, INVENTORY_STATUS, Location, LOCATION_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'
7
+ import {
8
+ Inventory,
9
+ INVENTORY_STATUS,
10
+ InventoryHistory,
11
+ InventoryNoGenerator,
12
+ Location,
13
+ LOCATION_STATUS,
14
+ LOCATION_TYPE
15
+ } from '@things-factory/warehouse-base'
8
16
 
9
17
  /**
18
+ * @description It will insert new record into inventory histories table.
19
+ * seq will be calculated based on number of records for one specific pallet id (provided by inventory object)
20
+ */
21
+ export async function generateInventoryHistory(
22
+ inventory: Inventory,
23
+ refOrder: any,
24
+ transactionType: string,
25
+ qty: number = 0,
26
+ uomValue: number = 0,
27
+ user: User,
28
+ trxMgr?: EntityManager,
29
+ targetInventory: Inventory = {}
30
+ ): Promise<InventoryHistory> {
31
+ const invHistoryRepo: Repository<InventoryHistory> =
32
+ trxMgr?.getRepository(InventoryHistory) || getRepository(InventoryHistory)
33
+ const invRepo: Repository<Inventory> = trxMgr?.getRepository(Inventory) || getRepository(Inventory)
34
+
35
+ if (!inventory?.id) throw new Error(`Can't find out ID of inventory.`)
36
+ if (!refOrder?.id || !refOrder.name) throw new Error(`Can't find out ID or Name of Reference Order`)
37
+ if (
38
+ !inventory?.domain ||
39
+ !inventory?.bizplace ||
40
+ !inventory?.product?.id ||
41
+ !inventory?.warehouse?.id ||
42
+ !inventory?.location?.id
43
+ ) {
44
+ inventory = await invRepo.findOne({
45
+ where: { id: inventory.id },
46
+ relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']
47
+ })
48
+ }
49
+
50
+ const domain: Domain = inventory.domain
51
+ const location: Location = inventory.location
52
+
53
+ const seq: number = await invHistoryRepo.count({ domain: inventory.domain, palletId: inventory.palletId })
54
+ let openingQty: number = 0
55
+ let openingUomValue: number = 0
56
+
57
+ if (seq) {
58
+ const lastInvHistory: InventoryHistory = await invHistoryRepo.findOne({
59
+ domain: inventory.domain,
60
+ palletId: inventory.palletId,
61
+ seq: seq - 1
62
+ })
63
+
64
+ openingQty = lastInvHistory.openingQty + lastInvHistory.qty
65
+ openingUomValue = lastInvHistory.openingUomValue + lastInvHistory.uomValue
66
+ }
67
+
68
+ if (transactionType == 'PICKING' || transactionType == 'UNLOADING') {
69
+ const [findSameOrderHistory, total]: InventoryHistory = await invHistoryRepo.findAndCount({
70
+ domain: inventory.domain,
71
+ palletId: inventory.palletId,
72
+ refOrderId: refOrder.id
73
+ })
74
+
75
+ if (findSameOrderHistory) {
76
+ let prevTotalQty = 0
77
+ let prevTotalUomValue = 0
78
+ for (let oh of findSameOrderHistory) {
79
+ prevTotalQty += oh.qty
80
+ prevTotalUomValue += oh.uomValue
81
+ }
82
+ qty -= prevTotalQty
83
+ uomValue -= prevTotalUomValue
84
+ }
85
+ }
86
+
87
+ let inventoryHistory: InventoryHistory = new InventoryHistory()
88
+ inventoryHistory.name = InventoryNoGenerator.inventoryHistoryName()
89
+ inventoryHistory.description = inventory.description
90
+ inventoryHistory.seq = seq
91
+ inventoryHistory.palletId = inventory.palletId
92
+ inventoryHistory.cartonId = inventory.cartonId
93
+ inventoryHistory.batchId = inventory.batchId
94
+ inventoryHistory.batchIdRef = inventory.batchIdRef
95
+ inventoryHistory.status = inventory.status
96
+ inventoryHistory.transactionType = transactionType
97
+ inventoryHistory.refOrderId = refOrder?.id || null
98
+ inventoryHistory.orderNo = refOrder?.name || null
99
+ inventoryHistory.orderRefNo = refOrder?.refNo || null
100
+ inventoryHistory.inventory = inventory
101
+ inventoryHistory.targetInventory = targetInventory
102
+ inventoryHistory.product = inventory.product
103
+ inventoryHistory.reusablePallet = inventory.reusablePallet
104
+ inventoryHistory.zone = inventory.zone
105
+ inventoryHistory.warehouse = inventory.warehouse
106
+ inventoryHistory.location = inventory.location
107
+ inventoryHistory.expirationDate = inventory.expirationDate
108
+ inventoryHistory.packingType = inventory.packingType
109
+ inventoryHistory.packingSize = inventory.packingSize
110
+ inventoryHistory.uom = inventory.uom
111
+ inventoryHistory.qty = qty
112
+ inventoryHistory.openingQty = openingQty
113
+ inventoryHistory.uomValue = uomValue
114
+ inventoryHistory.openingUomValue = openingUomValue
115
+ inventoryHistory.unitCost = inventory.unitCost
116
+ inventoryHistory.domain = inventory.domain
117
+ inventoryHistory.bizplace = inventory.bizplace
118
+ inventoryHistory.creator = user
119
+ inventoryHistory.updater = user
120
+
121
+ inventoryHistory = await invHistoryRepo.save(inventoryHistory)
122
+
123
+ if (inventory.lastSeq !== seq) {
124
+ await invRepo.save({
125
+ id: inventory.id,
126
+ lastSeq: inventoryHistory.seq,
127
+ updater: user
128
+ })
129
+ }
130
+
131
+ await switchLocationStatus(domain, location, user, trxMgr)
132
+ return inventoryHistory
133
+ }
134
+
10
135
  /**
11
136
  * @description: Check location emptiness and update status of location
12
137
  * @param domain