@things-factory/worksheet-base 4.3.75 → 4.3.78
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/dist-server/controllers/outbound/packing-worksheet-controller.js +14 -2
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +6 -9
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +14 -1
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +12 -0
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +54 -11
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +87 -79
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +4 -22
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js +92 -150
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +5 -2
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
- package/dist-server/utils/worksheet-util.js +3 -1
- package/dist-server/utils/worksheet-util.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/outbound/packing-worksheet-controller.ts +21 -2
- package/server/controllers/outbound/picking-worksheet-controller.ts +7 -11
- package/server/controllers/worksheet-controller.ts +25 -2
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +13 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +3 -7
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +5 -4
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +62 -12
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +99 -94
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +1 -20
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +98 -213
- package/server/graphql/types/worksheet/index.ts +5 -2
- package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
- package/server/utils/worksheet-util.ts +3 -1
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { EntityManager, getManager } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
-
import { OrderInventory } from '@things-factory/sales-base'
|
|
5
4
|
import { Domain } from '@things-factory/shell'
|
|
6
5
|
|
|
7
|
-
import { PickingWorksheetController } from '../../../../controllers/'
|
|
8
|
-
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
9
|
-
|
|
10
6
|
import { generatePickingWorksheet } from './generate-release-good-worksheet'
|
|
11
7
|
|
|
12
8
|
export const generateMultipleReleaseGoodWorksheetResolver = {
|
|
13
|
-
async generateMultipleReleaseGoodWorksheet(_: any, {
|
|
9
|
+
async generateMultipleReleaseGoodWorksheet(_: any, { releaseGoods }, context: any) {
|
|
14
10
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
15
11
|
|
|
16
|
-
for (let idx = 0; idx <
|
|
12
|
+
for (let idx = 0; idx < releaseGoods.length; idx++) {
|
|
17
13
|
await getManager().transaction(async txMgr => {
|
|
18
|
-
await generatePickingWorksheet(txMgr, domain, user,
|
|
14
|
+
await generatePickingWorksheet(txMgr, domain, user, releaseGoods[idx].name, releaseGoods[idx].status)
|
|
19
15
|
});
|
|
20
16
|
}
|
|
21
17
|
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts
CHANGED
|
@@ -11,9 +11,9 @@ import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
|
11
11
|
import { Inventory, InventoryUtil, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
|
|
12
12
|
|
|
13
13
|
export const generateReleaseGoodWorksheetResolver = {
|
|
14
|
-
async generateReleaseGoodWorksheet(_: any, { releaseGoodNo }, context: any) {
|
|
14
|
+
async generateReleaseGoodWorksheet(_: any, { releaseGoodNo, currentStatus = null }, context: any) {
|
|
15
15
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
16
|
-
return await generatePickingWorksheet(tx, domain, user, releaseGoodNo)
|
|
16
|
+
return await generatePickingWorksheet(tx, domain, user, releaseGoodNo, currentStatus)
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -21,7 +21,8 @@ export async function generatePickingWorksheet(
|
|
|
21
21
|
tx: EntityManager,
|
|
22
22
|
domain: Domain,
|
|
23
23
|
user: User,
|
|
24
|
-
releaseGoodNo: string
|
|
24
|
+
releaseGoodNo: string,
|
|
25
|
+
currentStatus: string = null
|
|
25
26
|
): Promise<Worksheet> {
|
|
26
27
|
try {
|
|
27
28
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
@@ -78,7 +79,7 @@ export async function generatePickingWorksheet(
|
|
|
78
79
|
|
|
79
80
|
await tx.getRepository(ReleaseGood).update({ id: releaseGood.id }, { status: ORDER_STATUS.DONE })
|
|
80
81
|
} else {
|
|
81
|
-
worksheet = await worksheetController.generatePickingWorksheet(releaseGoodNo)
|
|
82
|
+
worksheet = await worksheetController.generatePickingWorksheet(releaseGoodNo, currentStatus)
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
return worksheet
|
|
@@ -14,9 +14,10 @@ import { Domain } from '@things-factory/shell'
|
|
|
14
14
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
15
15
|
|
|
16
16
|
import { WORKSHEET_TYPE } from '../../../constants'
|
|
17
|
-
import { SellercraftController } from '../../../controllers'
|
|
17
|
+
import { PackingWorksheetController, SellercraftController } from '../../../controllers'
|
|
18
18
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
19
19
|
import { fetchExecutingWorksheet } from '../../../utils'
|
|
20
|
+
import { PartnerSetting, Setting } from '@things-factory/setting-base'
|
|
20
21
|
|
|
21
22
|
export const packingWorksheetResolver = {
|
|
22
23
|
async packingWorksheet(_: any, { releaseGoodNo }, context: any) {
|
|
@@ -47,7 +48,7 @@ export const packingWorksheetResolver = {
|
|
|
47
48
|
.innerJoinAndSelect(
|
|
48
49
|
'worksheets',
|
|
49
50
|
'ws',
|
|
50
|
-
`orderInventory.release_good_id = ws.release_good_id AND ws.type = 'PACKING' AND ws.status = 'EXECUTING'`
|
|
51
|
+
`orderInventory.release_good_id = ws.release_good_id AND ws.type = 'PACKING' AND (ws.status = 'EXECUTING' OR ws.status = 'DEACTIVATED')`
|
|
51
52
|
)
|
|
52
53
|
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
53
54
|
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
@@ -61,11 +62,22 @@ export const packingWorksheetResolver = {
|
|
|
61
62
|
.andWhere('releaseGood.status IN (:...status)', {
|
|
62
63
|
status: [ORDER_STATUS.READY_TO_PACK, ORDER_STATUS.PACKING]
|
|
63
64
|
})
|
|
65
|
+
.orderBy(`case when orderInventory.status = '${ORDER_INVENTORY_STATUS.PACKED}' then 1 end`)
|
|
66
|
+
.addOrderBy('ws.created_at', 'ASC')
|
|
64
67
|
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
const [orderInventoriesByBin, totalInventoriesByBin] = await qb.getManyAndCount()
|
|
69
|
+
// @oscarchuaweiwen-fsd @chrislim I suggest using getMany() instead since the total is redundant here
|
|
70
|
+
|
|
71
|
+
// remove duplicated count of release good
|
|
72
|
+
const filteredRO = orderInventoriesByBin.map(oiBin => {
|
|
73
|
+
return oiBin.releaseGood.name
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
if (orderInventoriesByBin.length > 0) {
|
|
77
|
+
releaseGoodNo = orderInventoriesByBin[0].releaseGood.name
|
|
78
|
+
releaseGood = orderInventoriesByBin[0].releaseGood
|
|
79
|
+
releaseGood.totalInventoriesByBin = [...new Set(filteredRO)].length
|
|
80
|
+
releaseGood.isOrderInventoryBin = true
|
|
69
81
|
} else {
|
|
70
82
|
throw new Error(`Bin do not have any existing order.`)
|
|
71
83
|
}
|
|
@@ -95,7 +107,39 @@ export const packingWorksheetResolver = {
|
|
|
95
107
|
releaseGood
|
|
96
108
|
)
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
if (worksheet.status === 'DEACTIVATED') {
|
|
111
|
+
const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
112
|
+
|
|
113
|
+
const directActivatePackingWorksheet: Setting = await tx.getRepository(Setting).findOne({
|
|
114
|
+
where: { domain: domain, category: 'id-rule', name: 'enable-direct-activate-packing-worksheet' }
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
const partnerDirectActivatePackingWorksheetSetting: PartnerSetting = await tx
|
|
118
|
+
.getRepository(PartnerSetting)
|
|
119
|
+
.findOne({
|
|
120
|
+
where: {
|
|
121
|
+
setting: directActivatePackingWorksheet,
|
|
122
|
+
domain: domain,
|
|
123
|
+
partnerDomain: releaseGood.bizplace?.domain
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
if (
|
|
128
|
+
directActivatePackingWorksheet != undefined &&
|
|
129
|
+
directActivatePackingWorksheet.value.toLowerCase() == 'true'
|
|
130
|
+
) {
|
|
131
|
+
if (partnerDirectActivatePackingWorksheetSetting != undefined) {
|
|
132
|
+
if (partnerDirectActivatePackingWorksheetSetting.value.toLowerCase() == 'true')
|
|
133
|
+
await packingWSCtrl.activatePacking(worksheet.name)
|
|
134
|
+
} else {
|
|
135
|
+
await packingWSCtrl.activatePacking(worksheet.name)
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
throw new Error('Kindly go to packing worksheet page to activate the packing worksheet')
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
let marketplaceOrder: MarketplaceOrder = {}
|
|
99
143
|
let marketplaceOrderItems: MarketplaceOrderItem[] = []
|
|
100
144
|
let marketplaceStore
|
|
101
145
|
let trackingNo: string
|
|
@@ -103,7 +147,6 @@ export const packingWorksheetResolver = {
|
|
|
103
147
|
let marketplaceStatus: string
|
|
104
148
|
|
|
105
149
|
if (releaseGood.type === 'b2c') {
|
|
106
|
-
|
|
107
150
|
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
108
151
|
domain: worksheet.bizplace.domain,
|
|
109
152
|
status: SellercraftStatus.ACTIVE
|
|
@@ -165,8 +208,8 @@ export const packingWorksheetResolver = {
|
|
|
165
208
|
airwayBill: releaseGood?.airwayBill,
|
|
166
209
|
checkedRemarkBy: releaseGood?.checkedRemarkBy,
|
|
167
210
|
invoice: releaseGood?.invoice,
|
|
168
|
-
platform: marketplaceOrder ? marketplaceOrder.marketplaceStore
|
|
169
|
-
marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore
|
|
211
|
+
platform: Object.keys(marketplaceOrder).length > 0 ? marketplaceOrder.marketplaceStore?.platform : 'operato',
|
|
212
|
+
marketplaceStoreId: Object.keys(marketplaceOrder).length > 0 ? marketplaceOrder.marketplaceStore?.id : '',
|
|
170
213
|
marketplaceStatus: marketplaceStatus ? marketplaceStatus : '',
|
|
171
214
|
marketplaceOrder: marketplaceOrder ? marketplaceOrder : ''
|
|
172
215
|
},
|
|
@@ -265,7 +308,14 @@ async function getSellercraftDocument(sellercraft: Sellercraft, releaseGood: Rel
|
|
|
265
308
|
}
|
|
266
309
|
}
|
|
267
310
|
} catch (error) {
|
|
268
|
-
logger.error(
|
|
311
|
+
logger.error(
|
|
312
|
+
`packing-worksheet[getSellercraftDocument]:(data:${JSON.stringify({
|
|
313
|
+
sellercraft,
|
|
314
|
+
releaseGood,
|
|
315
|
+
domain,
|
|
316
|
+
user
|
|
317
|
+
})}) ${error} `
|
|
318
|
+
)
|
|
269
319
|
}
|
|
270
320
|
})
|
|
271
|
-
}
|
|
321
|
+
}
|
|
@@ -24,6 +24,7 @@ export const pendingCancellationReleaseOrder = {
|
|
|
24
24
|
relations: ['bizplace', 'orderInventories', 'orderVass']
|
|
25
25
|
})
|
|
26
26
|
|
|
27
|
+
if (foundRO.status === "DONE") throw new Error('Release good has been completed!')
|
|
27
28
|
if (!foundRO) throw new Error(`Release good order doesn't exists.`)
|
|
28
29
|
let targetOIs: OrderInventory[] = foundRO.orderInventories
|
|
29
30
|
let foundOVs: OrderVas[] = foundRO.orderVass
|
|
@@ -94,77 +95,81 @@ export const pendingCancellationReleaseOrder = {
|
|
|
94
95
|
await tx.getRepository(OrderVas).save(foundOVs)
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
// find worksheet and update status to PENDING_CANCEL
|
|
99
|
+
let foundWS: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
100
|
+
where: {
|
|
101
|
+
domain,
|
|
102
|
+
releaseGood: foundRO
|
|
103
|
+
},
|
|
104
|
+
order: { 'createdAt': 'DESC' }
|
|
105
|
+
})
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
updater: user
|
|
111
|
-
}
|
|
112
|
-
})
|
|
113
|
-
await tx.getRepository(WorksheetDetail).save(pickedWSD)
|
|
114
|
-
|
|
115
|
-
let replacedWSD: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
|
|
116
|
-
where: {
|
|
117
|
-
domain,
|
|
118
|
-
targetInventory: In(pickedOIs.map(oi => oi.id)),
|
|
119
|
-
status: ORDER_INVENTORY_STATUS.REPLACED
|
|
120
|
-
},
|
|
121
|
-
relations: ['targetInventory']
|
|
107
|
+
if (foundWS) {
|
|
108
|
+
await tx.getRepository(Worksheet).update({ id: foundWS.id }, {
|
|
109
|
+
status: ORDER_INVENTORY_STATUS.PENDING_CANCEL,
|
|
110
|
+
updater: user
|
|
122
111
|
})
|
|
123
112
|
|
|
124
|
-
if (
|
|
125
|
-
let
|
|
126
|
-
|
|
113
|
+
if (pickedOIs && pickedOIs.length) {
|
|
114
|
+
let pickedWSD: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
|
|
115
|
+
where: {
|
|
116
|
+
domain,
|
|
117
|
+
targetInventory: In(pickedOIs.map(oi => oi.id)),
|
|
118
|
+
status: ORDER_INVENTORY_STATUS.DONE,
|
|
119
|
+
worksheet: foundWS
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
pickedWSD = pickedWSD.map((wsd: WorksheetDetail) => {
|
|
127
124
|
return {
|
|
128
|
-
...
|
|
129
|
-
status: ORDER_INVENTORY_STATUS.
|
|
125
|
+
...wsd,
|
|
126
|
+
status: ORDER_INVENTORY_STATUS.PENDING_CANCEL,
|
|
130
127
|
updater: user
|
|
131
128
|
}
|
|
132
129
|
})
|
|
133
|
-
await tx.getRepository(
|
|
134
|
-
}
|
|
135
|
-
}
|
|
130
|
+
await tx.getRepository(WorksheetDetail).save(pickedWSD)
|
|
136
131
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
132
|
+
let replacedWSD: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
|
|
133
|
+
where: {
|
|
134
|
+
domain,
|
|
135
|
+
targetInventory: In(pickedOIs.map(oi => oi.id)),
|
|
136
|
+
status: ORDER_INVENTORY_STATUS.REPLACED,
|
|
137
|
+
worksheet: foundWS
|
|
138
|
+
},
|
|
139
|
+
relations: ['targetInventory']
|
|
140
|
+
})
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
if (replacedWSD && replacedWSD.length) {
|
|
143
|
+
let replacedOI: OrderInventory[] = replacedWSD.map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
144
|
+
replacedOI = replacedOI.map((oi: OrderInventory) => {
|
|
145
|
+
return {
|
|
146
|
+
...oi,
|
|
147
|
+
status: ORDER_INVENTORY_STATUS.REPLACED,
|
|
148
|
+
updater: user
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
await tx.getRepository(OrderInventory).save(replacedOI)
|
|
147
152
|
}
|
|
148
|
-
})
|
|
149
|
-
await tx.getRepository(WorksheetDetail).save(pickingWSD)
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// find worksheet and update status to PENDING_CANCEL
|
|
153
|
-
let foundWS: Worksheet[] = await tx.getRepository(Worksheet).find({
|
|
154
|
-
where: {
|
|
155
|
-
domain,
|
|
156
|
-
releaseGood: foundRO
|
|
157
153
|
}
|
|
158
|
-
})
|
|
159
154
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
155
|
+
if (pickingOIs && pickingOIs.length) {
|
|
156
|
+
let pickingWSD: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
|
|
157
|
+
where: {
|
|
158
|
+
domain, targetInventory: In(pickingOIs.map(oi => oi.id)),
|
|
159
|
+
worksheet: foundWS
|
|
160
|
+
}
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
pickingWSD = pickingWSD.map((wsd: WorksheetDetail) => {
|
|
164
|
+
return {
|
|
165
|
+
...wsd,
|
|
166
|
+
status: ORDER_INVENTORY_STATUS.PENDING_CANCEL,
|
|
167
|
+
updater: user
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
await tx.getRepository(WorksheetDetail).save(pickingWSD)
|
|
165
171
|
}
|
|
166
|
-
}
|
|
167
|
-
await tx.getRepository(Worksheet).save(foundWS)
|
|
172
|
+
}
|
|
168
173
|
|
|
169
174
|
// find DO and change status to pending cancel
|
|
170
175
|
let foundDO: DeliveryOrder[] = await tx.getRepository(DeliveryOrder).find({
|
|
@@ -186,43 +191,43 @@ export const pendingCancellationReleaseOrder = {
|
|
|
186
191
|
updater: user
|
|
187
192
|
})
|
|
188
193
|
|
|
189
|
-
// notification logics
|
|
190
|
-
// get Office Admin Users
|
|
191
|
-
const users: any[] = await tx
|
|
192
|
-
.getRepository('users_roles')
|
|
193
|
-
.createQueryBuilder('ur')
|
|
194
|
-
.select('ur.users_id', 'id')
|
|
195
|
-
.where(qb => {
|
|
196
|
-
const subQuery = qb
|
|
197
|
-
.subQuery()
|
|
198
|
-
.select('role.id')
|
|
199
|
-
.from(Role, 'role')
|
|
200
|
-
.where("role.name = 'Office Admin'")
|
|
201
|
-
.andWhere('role.domain_id = :domain', { domain: domain.id })
|
|
202
|
-
.getQuery()
|
|
203
|
-
return 'ur.roles_id IN ' + subQuery
|
|
204
|
-
})
|
|
205
|
-
.getRawMany()
|
|
206
|
-
|
|
207
|
-
// send notification to Office Admin Users
|
|
208
|
-
if (users?.length && context.header?.referer) {
|
|
209
|
-
const receivers: any[] = users.map(user => user.id)
|
|
210
|
-
const msg = {
|
|
211
|
-
title: `${foundRO.name} cancellation`,
|
|
212
|
-
body: `${customerBizplace.name} is requesting to cancel order`,
|
|
213
|
-
url: context.header.referer,
|
|
214
|
-
data: { url: context.header.referer }
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
219
|
-
*/
|
|
220
194
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
195
|
+
/**
|
|
196
|
+
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
197
|
+
*/
|
|
198
|
+
// // notification logics
|
|
199
|
+
// // get Office Admin Users
|
|
200
|
+
// const users: any[] = await tx
|
|
201
|
+
// .getRepository('users_roles')
|
|
202
|
+
// .createQueryBuilder('ur')
|
|
203
|
+
// .select('ur.users_id', 'id')
|
|
204
|
+
// .where(qb => {
|
|
205
|
+
// const subQuery = qb
|
|
206
|
+
// .subQuery()
|
|
207
|
+
// .select('role.id')
|
|
208
|
+
// .from(Role, 'role')
|
|
209
|
+
// .where("role.name = 'Office Admin'")
|
|
210
|
+
// .andWhere('role.domain_id = :domain', { domain: domain.id })
|
|
211
|
+
// .getQuery()
|
|
212
|
+
// return 'ur.roles_id IN ' + subQuery
|
|
213
|
+
// })
|
|
214
|
+
// .getRawMany()
|
|
215
|
+
|
|
216
|
+
// // send notification to Office Admin Users
|
|
217
|
+
// if (users?.length && context.header?.referer) {
|
|
218
|
+
// const receivers: any[] = users.map(user => user.id)
|
|
219
|
+
// const msg = {
|
|
220
|
+
// title: `${foundRO.name} cancellation`,
|
|
221
|
+
// body: `${customerBizplace.name} is requesting to cancel order`,
|
|
222
|
+
// url: context.header.referer,
|
|
223
|
+
// data: { url: context.header.referer }
|
|
224
|
+
// }
|
|
225
|
+
|
|
226
|
+
// await sendNotification({
|
|
227
|
+
// receivers,
|
|
228
|
+
// message: { ...msg }
|
|
229
|
+
// })
|
|
230
|
+
// }
|
|
226
231
|
|
|
227
232
|
return
|
|
228
233
|
}
|
|
@@ -226,26 +226,7 @@ export async function completePicking(
|
|
|
226
226
|
|
|
227
227
|
if (releaseGood.packingOption) {
|
|
228
228
|
const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
229
|
-
|
|
230
|
-
const directActivatePackingWorksheet: Setting = await tx.getRepository(Setting).findOne({
|
|
231
|
-
where: { domain: domain, category: 'id-rule', name: 'enable-direct-activate-packing-worksheet' }
|
|
232
|
-
})
|
|
233
|
-
const partnerDirectActivatePackingWorksheetSetting: PartnerSetting = await tx
|
|
234
|
-
.getRepository(PartnerSetting)
|
|
235
|
-
.findOne({
|
|
236
|
-
where: { setting: directActivatePackingWorksheet, domain: domain, partnerDomain: releaseGood.bizplace?.domain }
|
|
237
|
-
})
|
|
238
|
-
|
|
239
|
-
let packingWorksheet: Worksheet = await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)
|
|
240
|
-
|
|
241
|
-
if (directActivatePackingWorksheet != undefined && directActivatePackingWorksheet.value.toLowerCase() == 'true') {
|
|
242
|
-
if (partnerDirectActivatePackingWorksheetSetting != undefined) {
|
|
243
|
-
if (partnerDirectActivatePackingWorksheetSetting.value.toLowerCase() == 'true')
|
|
244
|
-
await packingWSCtrl.activatePacking(packingWorksheet.name)
|
|
245
|
-
} else {
|
|
246
|
-
await packingWSCtrl.activatePacking(packingWorksheet.name)
|
|
247
|
-
}
|
|
248
|
-
}
|
|
229
|
+
await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)
|
|
249
230
|
} else {
|
|
250
231
|
// Find Existing Loading Worksheet if any
|
|
251
232
|
let existLoadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|