@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 +4 -4
- package/server/controllers/vas/vas-worksheet-controller.ts +163 -0
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +18 -1
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +138 -71
- package/server/graphql/resolvers/worksheet/vas/edit-vas.ts +25 -0
- package/server/graphql/resolvers/worksheet/vas/index.ts +2 -0
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +5 -1
- package/server/graphql/types/worksheet/index.ts +6 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/worksheet-base",
|
|
3
|
-
"version": "4.3.
|
|
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.
|
|
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.
|
|
43
|
+
"@things-factory/warehouse-base": "^4.3.261",
|
|
44
44
|
"uuid": "^9.0.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
let
|
|
43
|
-
.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
wdStatus
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
106
|
-
|
|
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(
|
|
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!
|