@things-factory/worksheet-base 4.3.258 → 4.3.261

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "4.3.258",
3
+ "version": "4.3.261",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -36,12 +36,12 @@
36
36
  "@things-factory/integration-sftp": "^4.3.253",
37
37
  "@things-factory/marketplace-base": "^4.3.253",
38
38
  "@things-factory/notification": "^4.3.253",
39
- "@things-factory/sales-base": "^4.3.257",
39
+ "@things-factory/sales-base": "^4.3.261",
40
40
  "@things-factory/setting-base": "^4.3.253",
41
41
  "@things-factory/shell": "^4.3.253",
42
42
  "@things-factory/transport-base": "^4.3.253",
43
- "@things-factory/warehouse-base": "^4.3.256",
43
+ "@things-factory/warehouse-base": "^4.3.261",
44
44
  "uuid": "^9.0.0"
45
45
  },
46
- "gitHead": "db6fb3b3758ceda90678999a76c281c9ca46ccc4"
46
+ "gitHead": "c085fa97b4a7a9abd06aab1820d4e7dbc4ed83ad"
47
47
  }
@@ -13,6 +13,9 @@ import {
13
13
  ORDER_INVENTORY_STATUS,
14
14
  OrderNoGenerator,
15
15
  OrderVas,
16
+ OrderVasItem,
17
+ OrderVasPatch,
18
+ OrderVasItemPatch,
16
19
  ReleaseGood,
17
20
  VAS,
18
21
  VasOrder
@@ -1012,4 +1015,164 @@ export class VasWorksheetController extends WorksheetController {
1012
1015
  await this.COMPLETE_TRX_MAP[operationGuide](this.trxMgr, targetVas, this.user)
1013
1016
  }
1014
1017
  }
1018
+
1019
+ async editVas(
1020
+ tx: any,
1021
+ domain: Domain,
1022
+ user: User,
1023
+ orderVasPatch: OrderVasPatch[],
1024
+ orderVasItemPatch: OrderVasItemPatch[],
1025
+ orderNo: string
1026
+ ): Promise<Boolean> {
1027
+ let results = []
1028
+ const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({ where: { name: orderNo } })
1029
+ const orderVasRepo = getRepository(OrderVas)
1030
+ const orderVasItemRepo = getRepository(OrderVasItem)
1031
+ const worksheetDetailRepo = getRepository(WorksheetDetail)
1032
+ const worksheetRepo = getRepository(Worksheet)
1033
+ let vasWorksheet: Worksheet = await getRepository(Worksheet).findOne({
1034
+ where: { domain, releaseGood: releaseGood.id, type: 'VAS' }
1035
+ })
1036
+ // Order Vas
1037
+ if (orderVasPatch.length > 0) {
1038
+ const _deleteRecords = orderVasPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === '-')
1039
+ const _createRecords = orderVasPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
1040
+ const _updateRecords = orderVasPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
1041
+
1042
+ if (_deleteRecords.length > 0) {
1043
+ for (let i = 0; i < _deleteRecords.length; i++) {
1044
+ const deleteRecord = _deleteRecords[i]
1045
+ if (vasWorksheet) {
1046
+ await worksheetDetailRepo.delete({ targetVas: deleteRecord.id })
1047
+ }
1048
+ await orderVasItemRepo.delete({ orderVas: deleteRecord.id })
1049
+ await orderVasRepo.delete(deleteRecord.id)
1050
+ }
1051
+ }
1052
+
1053
+ if (_createRecords.length > 0) {
1054
+ for (let i = 0; i < _createRecords.length; i++) {
1055
+ const newRecord = _createRecords[i]
1056
+
1057
+ const result = await orderVasRepo.save({
1058
+ ...newRecord,
1059
+ id: uuidv4(),
1060
+ domain: domain,
1061
+ creator: user,
1062
+ updater: user
1063
+ })
1064
+
1065
+ results.push({ ...result, cuFlag: '+' })
1066
+
1067
+ // create wds if worksheet is available
1068
+ if (vasWorksheet) {
1069
+ const orderVas: OrderVas[] = await getRepository(OrderVas).find({ where: { id: result.id } })
1070
+ await this.createWorksheetDetails(vasWorksheet, WORKSHEET_TYPE.VAS, orderVas)
1071
+ }
1072
+ else if (releaseGood.status === 'READY_TO_PICK' && !vasWorksheet){
1073
+ const orderVas: OrderVas[] = await getRepository(OrderVas).find({ where: { id: result.id } })
1074
+ vasWorksheet = await this.generateWorksheet(
1075
+ WORKSHEET_TYPE.VAS,
1076
+ releaseGood,
1077
+ orderVas,
1078
+ ORDER_STATUS.READY_TO_PICK,
1079
+ ORDER_INVENTORY_STATUS.READY_TO_PICK
1080
+ )
1081
+ }
1082
+
1083
+ // create new ovi
1084
+ for (let ii = 0; ii < newRecord.orderVasItemsPatch.length; ii++) {
1085
+ await orderVasItemRepo.save({
1086
+ orderVas: result.id,
1087
+ name: `${newRecord.orderVasItemsPatch[ii].vas.name}- ${result.id}`,
1088
+ vas: newRecord.orderVasItemsPatch[ii].vas,
1089
+ vasQty: newRecord.orderVasItemsPatch[ii].vasQty,
1090
+ domain: domain,
1091
+ creator: user,
1092
+ createdAt: new Date()
1093
+ })
1094
+ }
1095
+ }
1096
+ }
1097
+
1098
+ if (_updateRecords.length > 0) {
1099
+ for (let i = 0; i < _updateRecords.length; i++) {
1100
+ const newRecord = _updateRecords[i]
1101
+ const orderVas: OrderVas = await orderVasRepo.findOne({
1102
+ where: { domain, id: newRecord.id },
1103
+ relations: ['product', 'productDetail', 'newProduct', 'newProductDetail', 'releaseGood', 'orderVasItems']
1104
+ })
1105
+
1106
+ const result = await orderVasRepo.save({
1107
+ ...orderVas,
1108
+ ...newRecord,
1109
+ updater: user
1110
+ })
1111
+
1112
+ results.push({ ...result, cuFlag: 'M' })
1113
+ }
1114
+ }
1115
+ }
1116
+
1117
+ // order Vas Item
1118
+ if (orderVasItemPatch.length > 0) {
1119
+ const _deleteRecords = orderVasItemPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === '-')
1120
+ const _createRecords = orderVasItemPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
1121
+ const _updateRecords = orderVasItemPatch.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
1122
+
1123
+ if (_deleteRecords.length > 0) {
1124
+ for (let i = 0; i < _deleteRecords.length; i++) {
1125
+ const deleteRecord = _deleteRecords[i]
1126
+ if (deleteRecord.id) {
1127
+ await orderVasItemRepo.delete(deleteRecord.id)
1128
+ }
1129
+ }
1130
+ }
1131
+
1132
+ if (_createRecords.length > 0) {
1133
+ for (let i = 0; i < _createRecords.length; i++) {
1134
+ const newRecord = _createRecords[i]
1135
+ const result = await orderVasItemRepo.save({
1136
+ id: uuidv4(),
1137
+ orderVas: newRecord.orderVas.id,
1138
+ name: `${newRecord.vas.name}- ${newRecord.orderVas.id}`,
1139
+ vas: newRecord.vas,
1140
+ vasQty: newRecord.vasQty,
1141
+ domain: domain,
1142
+ creator: user,
1143
+ createdAt: new Date()
1144
+ })
1145
+ results.push({ ...result, cuFlag: '+' })
1146
+ }
1147
+ }
1148
+
1149
+ if (_updateRecords.length > 0) {
1150
+ for (let i = 0; i < _updateRecords.length; i++) {
1151
+ const newRecord = _updateRecords[i]
1152
+
1153
+ const result = await getRepository(OrderVasItem).update(
1154
+ {
1155
+ id: newRecord.id
1156
+ },
1157
+ { vasQty: newRecord.vasQty, updater: user.id, updatedAt: new Date() }
1158
+ )
1159
+
1160
+ results.push({ ...result, cuFlag: 'M' })
1161
+ }
1162
+ }
1163
+ }
1164
+
1165
+ // delete worksheet if no orderVas Left
1166
+ if (vasWorksheet) {
1167
+ const vasWorksheetDetails: WorksheetDetail[] = await getRepository(WorksheetDetail).find({
1168
+ where: { domain, worksheet: vasWorksheet.id }
1169
+ })
1170
+
1171
+ if (vasWorksheetDetails.length == 0) {
1172
+ await worksheetRepo.delete(vasWorksheet.id)
1173
+ }
1174
+ }
1175
+
1176
+ return results ? true : false
1177
+ }
1015
1178
  }
@@ -20,7 +20,8 @@ import {
20
20
  Inventory,
21
21
  INVENTORY_STATUS,
22
22
  INVENTORY_TRANSACTION_TYPE,
23
- Location
23
+ Location,
24
+ ProductDetailStock
24
25
  } from '@things-factory/warehouse-base'
25
26
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
26
27
 
@@ -36,6 +37,7 @@ export const confirmCancellationReleaseOrder = {
36
37
  'bizplace',
37
38
  'bizplace.domain',
38
39
  'orderProducts',
40
+ 'orderProducts.productDetail',
39
41
  'orderInventories',
40
42
  'orderInventories.inventory',
41
43
  'orderInventories.inventory.location',
@@ -262,6 +264,21 @@ export const confirmCancellationReleaseOrder = {
262
264
  }
263
265
  }
264
266
 
267
+ if (!releaseGood?.assignedInventory && releaseGood?.orderInventories?.length <= 0) {
268
+ for (let op of releaseGood.orderProducts) {
269
+ await tx
270
+ .getRepository(ProductDetailStock)
271
+ .createQueryBuilder()
272
+ .update(ProductDetailStock)
273
+ .set({
274
+ unassignedQty: () => `"unassigned_qty" - ${op.releaseQty}`,
275
+ unassignedUomValue: () => `"unassigned_uom_value" - ${op.releaseUomValue}`
276
+ })
277
+ .where({ productDetail: op.productDetail.id })
278
+ .execute()
279
+ }
280
+ }
281
+
265
282
  await updateStockForOrderInventories(targetOIs, releaseGood, domain, user, tx)
266
283
 
267
284
  return
@@ -18,7 +18,6 @@ export const rejectCancellationReleaseOrder = {
18
18
  async rejectCancellationReleaseOrder(_: any, { name }, context: any) {
19
19
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
20
20
 
21
-
22
21
  try {
23
22
  // find release order
24
23
  let foundRO: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
@@ -35,79 +34,148 @@ export const rejectCancellationReleaseOrder = {
35
34
 
36
35
  if (!foundRO) throw new Error(`Release order doesn't exists.`)
37
36
 
38
- let targetOIs: OrderInventory[] = foundRO.orderInventories
39
-
40
- // perform update on all order inventories and worksheet
41
- let worksheetDetails = await Promise.all(targetOIs.map(async (orderInventory) => {
42
- let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).createQueryBuilder('wd')
43
- .innerJoinAndSelect('wd.worksheet', 'ws')
44
- .where('wd.target_inventory_id = :orderInventoryId', { orderInventoryId: orderInventory.id })
45
- .orderBy('ws.created_at', 'DESC')
46
- .addOrderBy('wd.name')
47
- .getOne()
48
-
49
- if (existingWorksheetDetail) {
50
- const startedAt = existingWorksheetDetail.worksheet.startedAt
51
- const wdType = existingWorksheetDetail.worksheet.type
52
- let wdStatus, oiStatus, roStatus, wStatus
53
- switch (wdType) {
54
- case 'PICKING':
55
- case 'BATCH_PICKING':
56
- wdStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : orderInventory.pickedQty == orderInventory.releaseQty ? WORKSHEET_STATUS.DONE : WORKSHEET_STATUS.EXECUTING
57
- oiStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PICK : orderInventory.pickedQty == orderInventory.releaseQty ? ORDER_INVENTORY_STATUS.PICKED : ORDER_INVENTORY_STATUS.PICKING
58
- roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PICK : ORDER_INVENTORY_STATUS.PICKING
59
- break;
60
- case 'PACKING':
61
- wdStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : orderInventory.packedQty == orderInventory.releaseQty ? WORKSHEET_STATUS.DONE : WORKSHEET_STATUS.EXECUTING
62
- oiStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PACK : orderInventory.packedQty == orderInventory.releaseQty ? ORDER_INVENTORY_STATUS.PACKED : ORDER_INVENTORY_STATUS.PACKING
63
- roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PACK : ORDER_INVENTORY_STATUS.PACKING
64
- break;
65
- case 'SORTING':
66
- wdStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : orderInventory.sortedQty == orderInventory.releaseQty ? WORKSHEET_STATUS.DONE : WORKSHEET_STATUS.EXECUTING
67
- oiStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_SORT : orderInventory.sortedQty == orderInventory.releaseQty ? ORDER_INVENTORY_STATUS.PICKED : ORDER_INVENTORY_STATUS.SORTING
68
- roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_SORT : ORDER_INVENTORY_STATUS.SORTING
69
- break;
70
- case 'LOADING':
71
- wdStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : orderInventory?.deliveryOrder ? WORKSHEET_STATUS.DONE : WORKSHEET_STATUS.EXECUTING
72
- oiStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_LOAD : orderInventory?.deliveryOrder ? ORDER_INVENTORY_STATUS.LOADED : ORDER_INVENTORY_STATUS.LOADING
73
- roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_LOAD : ORDER_INVENTORY_STATUS.LOADING
74
- break;
75
- default:
76
- break;
77
- }
78
-
79
- wStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : WORKSHEET_STATUS.EXECUTING
80
-
81
- await tx.getRepository(WorksheetDetail).update({ id: existingWorksheetDetail.id }, { status: wdStatus, updatedAt: new Date(), updater: user })
82
- await tx.getRepository(OrderInventory).update({ id: orderInventory.id }, { status: oiStatus, updatedAt: new Date(), updater: user })
83
-
84
- return { worksheet: existingWorksheetDetail.worksheet, wStatus, roStatus }
85
- } else {
86
- await tx.getRepository(OrderInventory).update({ id: orderInventory.id }, { status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET, updatedAt: new Date(), updater: user })
87
- return { worksheet: null, wStatus: null, roStatus: ORDER_STATUS.PENDING_WORKSHEET }
37
+ let targetOIs: OrderInventory[] = foundRO?.orderInventories
38
+
39
+ if (targetOIs.length > 0) {
40
+ // perform update on all order inventories and worksheet
41
+ let worksheetDetails = await Promise.all(
42
+ targetOIs.map(async orderInventory => {
43
+ let existingWorksheetDetail: WorksheetDetail = await tx
44
+ .getRepository(WorksheetDetail)
45
+ .createQueryBuilder('wd')
46
+ .innerJoinAndSelect('wd.worksheet', 'ws')
47
+ .where('wd.target_inventory_id = :orderInventoryId', { orderInventoryId: orderInventory.id })
48
+ .orderBy('ws.created_at', 'DESC')
49
+ .addOrderBy('wd.name')
50
+ .getOne()
51
+
52
+ if (existingWorksheetDetail) {
53
+ const startedAt = existingWorksheetDetail.worksheet.startedAt
54
+ const wdType = existingWorksheetDetail.worksheet.type
55
+ let wdStatus, oiStatus, roStatus, wStatus
56
+ switch (wdType) {
57
+ case 'PICKING':
58
+ case 'BATCH_PICKING':
59
+ wdStatus = !startedAt
60
+ ? WORKSHEET_STATUS.DEACTIVATED
61
+ : orderInventory.pickedQty == orderInventory.releaseQty
62
+ ? WORKSHEET_STATUS.DONE
63
+ : WORKSHEET_STATUS.EXECUTING
64
+ oiStatus = !startedAt
65
+ ? ORDER_INVENTORY_STATUS.READY_TO_PICK
66
+ : orderInventory.pickedQty == orderInventory.releaseQty
67
+ ? ORDER_INVENTORY_STATUS.PICKED
68
+ : ORDER_INVENTORY_STATUS.PICKING
69
+ roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PICK : ORDER_INVENTORY_STATUS.PICKING
70
+ break
71
+ case 'PACKING':
72
+ wdStatus = !startedAt
73
+ ? WORKSHEET_STATUS.DEACTIVATED
74
+ : orderInventory.packedQty == orderInventory.releaseQty
75
+ ? WORKSHEET_STATUS.DONE
76
+ : WORKSHEET_STATUS.EXECUTING
77
+ oiStatus = !startedAt
78
+ ? ORDER_INVENTORY_STATUS.READY_TO_PACK
79
+ : orderInventory.packedQty == orderInventory.releaseQty
80
+ ? ORDER_INVENTORY_STATUS.PACKED
81
+ : ORDER_INVENTORY_STATUS.PACKING
82
+ roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_PACK : ORDER_INVENTORY_STATUS.PACKING
83
+ break
84
+ case 'SORTING':
85
+ wdStatus = !startedAt
86
+ ? WORKSHEET_STATUS.DEACTIVATED
87
+ : orderInventory.sortedQty == orderInventory.releaseQty
88
+ ? WORKSHEET_STATUS.DONE
89
+ : WORKSHEET_STATUS.EXECUTING
90
+ oiStatus = !startedAt
91
+ ? ORDER_INVENTORY_STATUS.READY_TO_SORT
92
+ : orderInventory.sortedQty == orderInventory.releaseQty
93
+ ? ORDER_INVENTORY_STATUS.PICKED
94
+ : ORDER_INVENTORY_STATUS.SORTING
95
+ roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_SORT : ORDER_INVENTORY_STATUS.SORTING
96
+ break
97
+ case 'LOADING':
98
+ wdStatus = !startedAt
99
+ ? WORKSHEET_STATUS.DEACTIVATED
100
+ : orderInventory?.deliveryOrder
101
+ ? WORKSHEET_STATUS.DONE
102
+ : WORKSHEET_STATUS.EXECUTING
103
+ oiStatus = !startedAt
104
+ ? ORDER_INVENTORY_STATUS.READY_TO_LOAD
105
+ : orderInventory?.deliveryOrder
106
+ ? ORDER_INVENTORY_STATUS.LOADED
107
+ : ORDER_INVENTORY_STATUS.LOADING
108
+ roStatus = !startedAt ? ORDER_INVENTORY_STATUS.READY_TO_LOAD : ORDER_INVENTORY_STATUS.LOADING
109
+ break
110
+ default:
111
+ break
112
+ }
113
+
114
+ wStatus = !startedAt ? WORKSHEET_STATUS.DEACTIVATED : WORKSHEET_STATUS.EXECUTING
115
+
116
+ await tx
117
+ .getRepository(WorksheetDetail)
118
+ .update({ id: existingWorksheetDetail.id }, { status: wdStatus, updatedAt: new Date(), updater: user })
119
+ await tx
120
+ .getRepository(OrderInventory)
121
+ .update({ id: orderInventory.id }, { status: oiStatus, updatedAt: new Date(), updater: user })
122
+
123
+ return { worksheet: existingWorksheetDetail.worksheet, wStatus, roStatus }
124
+ } else {
125
+ await tx
126
+ .getRepository(OrderInventory)
127
+ .update(
128
+ { id: orderInventory.id },
129
+ { status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET, updatedAt: new Date(), updater: user }
130
+ )
131
+ return { worksheet: null, wStatus: null, roStatus: ORDER_STATUS.PENDING_WORKSHEET }
132
+ }
133
+ })
134
+ )
135
+
136
+ if (worksheetDetails[0].worksheet) {
137
+ await tx.getRepository(Worksheet).update(
138
+ { id: worksheetDetails[0].worksheet.id },
139
+ {
140
+ status: worksheetDetails[0].wStatus,
141
+ updatedAt: new Date(),
142
+ updater: user
143
+ }
144
+ )
88
145
  }
89
- }))
90
-
91
- if (worksheetDetails[0].worksheet) {
92
- await tx.getRepository(Worksheet).update({ id: worksheetDetails[0].worksheet.id }, {
93
- status: worksheetDetails[0].wStatus,
94
- updatedAt: new Date(),
95
- updater: user
96
- })
97
- }
98
-
99
- await tx.getRepository(ReleaseGood).update({ id: foundRO.id }, {
100
- status: worksheetDetails[0].roStatus,
101
- updatedAt: new Date(),
102
- updater: user
103
- })
104
146
 
105
- // reverse DO status
106
- await reverseDO(foundRO, context)
147
+ await tx.getRepository(ReleaseGood).update(
148
+ { id: foundRO.id },
149
+ {
150
+ status: worksheetDetails[0].roStatus,
151
+ updatedAt: new Date(),
152
+ updater: user
153
+ }
154
+ )
155
+
156
+ // reverse DO status
157
+ await reverseDO(foundRO, context)
158
+ } else {
159
+ await tx.getRepository(ReleaseGood).update(
160
+ { id: foundRO.id },
161
+ {
162
+ status: ORDER_STATUS.PENDING_WORKSHEET,
163
+ updatedAt: new Date(),
164
+ updater: user
165
+ }
166
+ )
167
+ }
107
168
 
108
169
  return
109
170
  } catch (error) {
110
- logger.error(`reject-cancellation-release-order[rejectCancellationReleaseOrder]:(data:${JSON.stringify({ name, tx, domain, user })}) ${error}`)
171
+ logger.error(
172
+ `reject-cancellation-release-order[rejectCancellationReleaseOrder]:(data:${JSON.stringify({
173
+ name,
174
+ tx,
175
+ domain,
176
+ user
177
+ })}) ${error}`
178
+ )
111
179
  throw new Error('Something went wrong. Please contact support.')
112
180
  }
113
181
  }
@@ -132,5 +200,4 @@ async function reverseDO(releaseGood: ReleaseGood, context: any) {
132
200
 
133
201
  await tx.getRepository(DeliveryOrder).save(foundDO)
134
202
  }
135
-
136
- }
203
+ }
@@ -0,0 +1,25 @@
1
+ import { User } from '@things-factory/auth-base'
2
+ import { Domain } from '@things-factory/shell'
3
+ import { EntityManager } from 'typeorm'
4
+ import { VasWorksheetController } from '../../../../controllers'
5
+ import { WorksheetDetail } from '../../../../entities'
6
+ import { OrderVasPatch, OrderVasItemPatch } from '@things-factory/sales-base'
7
+
8
+ export const editVasResolver = {
9
+ async editVas(_: any, { orderVasPatch, orderVasItemPatch, orderNo }, context: any) {
10
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
11
+ return await editVas(tx, domain, user, orderVasPatch, orderVasItemPatch, orderNo)
12
+ }
13
+ }
14
+
15
+ export async function editVas(
16
+ tx: EntityManager,
17
+ domain: Domain,
18
+ user: User,
19
+ orderVasPatch: OrderVasPatch[],
20
+ orderVasItemPatch: OrderVasItemPatch[],
21
+ orderNo: string
22
+ ) {
23
+ const worksheetController: VasWorksheetController = new VasWorksheetController(tx, domain, user)
24
+ return await worksheetController.editVas(tx, domain, user, orderVasPatch, orderVasItemPatch, orderNo)
25
+ }
@@ -3,6 +3,7 @@ import { activateVasResolver } from './activate-vas'
3
3
  import { executeVasResolver } from './execute-vas'
4
4
  import { undoVasResolver } from './undo-vas'
5
5
  import { completeVasResolver } from './complete-vas'
6
+ import { editVasResolver } from './edit-vas'
6
7
  import { undoVasInventoryResolver } from './undo-vas-inventory'
7
8
 
8
9
  export const Mutations = {
@@ -11,5 +12,6 @@ export const Mutations = {
11
12
  ...executeVasResolver,
12
13
  ...undoVasResolver,
13
14
  ...completeVasResolver,
15
+ ...editVasResolver,
14
16
  ...undoVasInventoryResolver
15
17
  }
@@ -27,8 +27,10 @@ export const generatePalletIdResolver = {
27
27
  'targetProduct.arrivalNotice',
28
28
  'targetProduct.arrivalNotice.purchaseOrder',
29
29
  'targetProduct.product',
30
+ 'targetProduct.productDetail',
30
31
  'targetInventory',
31
32
  'targetInventory.product',
33
+ 'targetInventory.productDetail',
32
34
  'targetVas',
33
35
  'targetVas.targetProduct'
34
36
  ]
@@ -52,7 +54,9 @@ export const generatePalletIdResolver = {
52
54
  orderProductRemark: foundWSD.targetProduct.remark,
53
55
  purchaseOrderNo: foundWSD.targetProduct.arrivalNotice?.purchaseOrder?.name || '',
54
56
  arrivalNoticeRefNo: foundWSD.targetProduct.arrivalNotice?.refNo || '',
55
- arrivalNoticeNo: foundWSD.targetProduct.arrivalNotice?.name || ''
57
+ arrivalNoticeNo: foundWSD.targetProduct.arrivalNotice?.name || '',
58
+ uomValue: foundWSD.targetProduct.uomValue,
59
+ uom: foundWSD.targetProduct.uom
56
60
  }
57
61
  } else if (foundWSD.targetInventory) {
58
62
  result = {
@@ -506,6 +506,12 @@ export const Mutation = /* GraphQL */ `
506
506
  worksheetDetails: [WorksheetDetailPatch]
507
507
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
508
508
 
509
+ editVas (
510
+ orderVasPatch: [OrderVasPatch]
511
+ orderVasItemPatch: [OrderVasItemPatch]
512
+ orderNo: String
513
+ ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
514
+
509
515
  repalletizing (
510
516
  worksheetDetailName: String!
511
517
  fromPalletId: String!