@things-factory/worksheet-base 4.3.346 → 4.3.347
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/picking-worksheet-controller.js +158 -11
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +4 -3
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +0 -2
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js +56 -0
- package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +4 -0
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/package.json +2 -2
- package/server/controllers/outbound/picking-worksheet-controller.ts +235 -17
- package/server/controllers/worksheet-controller.ts +37 -9
- package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +4 -5
- package/server/graphql/resolvers/worksheet/picking/bulk-activate-picking.ts +79 -0
- package/server/graphql/resolvers/worksheet/picking/index.ts +7 -5
- package/server/graphql/types/worksheet/index.ts +4 -0
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
EntityManager,
|
|
3
|
+
EntitySchema,
|
|
4
|
+
Equal,
|
|
5
|
+
FindOneOptions,
|
|
6
|
+
getRepository,
|
|
7
|
+
In,
|
|
8
|
+
Not
|
|
9
|
+
} from 'typeorm'
|
|
2
10
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
11
|
+
import {
|
|
12
|
+
Role,
|
|
13
|
+
User
|
|
14
|
+
} from '@things-factory/auth-base'
|
|
15
|
+
import {
|
|
16
|
+
Bizplace,
|
|
17
|
+
getDomainUsers
|
|
18
|
+
} from '@things-factory/biz-base'
|
|
19
|
+
import {
|
|
20
|
+
Product,
|
|
21
|
+
ProductDetail
|
|
22
|
+
} from '@things-factory/product-base'
|
|
6
23
|
import {
|
|
7
24
|
ArrivalNotice,
|
|
8
25
|
DeliveryOrder,
|
|
@@ -27,8 +44,14 @@ import {
|
|
|
27
44
|
Pallet
|
|
28
45
|
} from '@things-factory/warehouse-base'
|
|
29
46
|
|
|
30
|
-
import {
|
|
31
|
-
|
|
47
|
+
import {
|
|
48
|
+
WORKSHEET_STATUS,
|
|
49
|
+
WORKSHEET_TYPE
|
|
50
|
+
} from '../constants'
|
|
51
|
+
import {
|
|
52
|
+
Worksheet,
|
|
53
|
+
WorksheetDetail
|
|
54
|
+
} from '../entities'
|
|
32
55
|
import { WorksheetNoGenerator } from '../utils'
|
|
33
56
|
|
|
34
57
|
export type ReferenceOrderType =
|
|
@@ -742,8 +765,12 @@ export class WorksheetController {
|
|
|
742
765
|
async activateWorksheet(
|
|
743
766
|
worksheet: Worksheet,
|
|
744
767
|
worksheetDetails: WorksheetDetail[],
|
|
745
|
-
changedWorksheetDetails: Partial<WorksheetDetail>[]
|
|
768
|
+
changedWorksheetDetails: Partial<WorksheetDetail>[],
|
|
769
|
+
tx?: EntityManager
|
|
746
770
|
): Promise<Worksheet> {
|
|
771
|
+
|
|
772
|
+
const transaction = tx ? tx : this.trxMgr
|
|
773
|
+
|
|
747
774
|
if (!worksheet.id || worksheetDetails.some((wsd: WorksheetDetail) => !wsd.id)) {
|
|
748
775
|
throw new Error(this.ERROR_MSG.UPDATE.ID_NOT_EXISTS)
|
|
749
776
|
}
|
|
@@ -751,13 +778,14 @@ export class WorksheetController {
|
|
|
751
778
|
worksheet.status = WORKSHEET_STATUS.EXECUTING
|
|
752
779
|
worksheet.startedAt = new Date()
|
|
753
780
|
worksheet.updater = this.user
|
|
754
|
-
worksheet = await
|
|
781
|
+
worksheet = await transaction.getRepository(Worksheet).save(worksheet)
|
|
782
|
+
|
|
755
783
|
|
|
756
784
|
worksheetDetails = this.renewWorksheetDetails(worksheetDetails, changedWorksheetDetails, 'name', {
|
|
757
785
|
status: WORKSHEET_STATUS.EXECUTING,
|
|
758
786
|
updater: this.user
|
|
759
787
|
})
|
|
760
|
-
worksheet.worksheetDetails = await
|
|
788
|
+
worksheet.worksheetDetails = await transaction.getRepository(WorksheetDetail).save(worksheetDetails)
|
|
761
789
|
|
|
762
790
|
return worksheet
|
|
763
791
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { Domain } from '@things-factory/shell'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
+
|
|
6
|
+
import { WORKSHEET_TYPE } from '../../../../constants'
|
|
5
7
|
import { Worksheet } from '../../../../entities'
|
|
6
8
|
|
|
7
9
|
export const assignPickingWorkerResolver = {
|
|
@@ -25,9 +27,6 @@ export const assignPickingWorkerResolver = {
|
|
|
25
27
|
},{type:WORKSHEET_TYPE.PICKING}]})
|
|
26
28
|
|
|
27
29
|
if (!worksheet) throw new Error('failed to find target picking worksheet')
|
|
28
|
-
if (worksheet.status !== WORKSHEET_STATUS.DEACTIVATED)
|
|
29
|
-
throw new Error(`current status of worksheet is not able to assign worker`)
|
|
30
|
-
|
|
31
30
|
worksheet.assignee = assignee
|
|
32
31
|
await tx.getRepository(Worksheet).save(worksheet)
|
|
33
32
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ApplicationType,
|
|
5
|
+
User
|
|
6
|
+
} from '@things-factory/auth-base'
|
|
7
|
+
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
8
|
+
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
9
|
+
import {
|
|
10
|
+
ORDER_STATUS,
|
|
11
|
+
ReleaseGood
|
|
12
|
+
} from '@things-factory/sales-base'
|
|
13
|
+
import { Domain } from '@things-factory/shell'
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
EcommerceController,
|
|
17
|
+
PickingWorksheetController
|
|
18
|
+
} from '../../../../controllers'
|
|
19
|
+
import { Worksheet } from '../../../../entities'
|
|
20
|
+
|
|
21
|
+
export const activateBulkPickingResolver = {
|
|
22
|
+
async activateBulkPicking(_: any, { worksheetNo }, context: any) {
|
|
23
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
24
|
+
|
|
25
|
+
return await activateBulkPicking(tx, domain, user, worksheetNo)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activateBulkPicking(
|
|
30
|
+
tx: EntityManager,
|
|
31
|
+
domain: Domain,
|
|
32
|
+
user: User,
|
|
33
|
+
worksheetNo: string[]
|
|
34
|
+
): Promise<Worksheet[]> {
|
|
35
|
+
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
36
|
+
const worksheets = await worksheetController.activateBulkPicking(worksheetNo)
|
|
37
|
+
|
|
38
|
+
for (const worksheet of worksheets) {
|
|
39
|
+
const companyDomain: Domain = worksheet?.bizplace.company.domain
|
|
40
|
+
let releaseGood: ReleaseGood = worksheet.releaseGood
|
|
41
|
+
const orderSource: string = releaseGood.source
|
|
42
|
+
|
|
43
|
+
switch (orderSource) {
|
|
44
|
+
case ApplicationType.MMS:
|
|
45
|
+
// find for any existing marketplace store connections
|
|
46
|
+
const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
47
|
+
where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
|
|
48
|
+
relations: ['marketplaceDistributors']
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
if (marketplaceStores?.length) {
|
|
52
|
+
if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
53
|
+
const worksheetDetails = worksheet.worksheetDetails
|
|
54
|
+
let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
|
|
55
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
56
|
+
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
60
|
+
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
61
|
+
relations: ['marketplaceStore']
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
if (marketplaceOrder) {
|
|
65
|
+
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
66
|
+
|
|
67
|
+
if (marketplaceStore.isAutoUpdateShipment) {
|
|
68
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
69
|
+
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
break
|
|
74
|
+
default:
|
|
75
|
+
break
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return worksheets
|
|
79
|
+
}
|
|
@@ -2,22 +2,24 @@ import { activateBatchPickingResolver } from './activate-batch-picking'
|
|
|
2
2
|
import { activatePickingResolver } from './activate-picking'
|
|
3
3
|
import { assignPickingInventoriesResolver } from './assign-picking-inventories'
|
|
4
4
|
import { assignPickingWorkerResolver } from './assign-picking-worker'
|
|
5
|
-
import { fetchAndAssignPickingTaskResolver } from './fetch-and-assign-picking-task'
|
|
6
5
|
import { batchPickingResolver } from './batch-picking'
|
|
6
|
+
import { activateBulkPickingResolver } from './bulk-activate-picking'
|
|
7
7
|
import { completeBatchPickingResolver } from './complete-batch-picking'
|
|
8
8
|
import { completePickingResolver } from './complete-picking'
|
|
9
|
+
import { fetchAndAssignPickingTaskResolver } from './fetch-and-assign-picking-task'
|
|
9
10
|
import { pickingResolver } from './picking'
|
|
10
|
-
import {
|
|
11
|
+
import { replenishmentPickingResolver } from './replenishment-picking'
|
|
11
12
|
import { scanProductBatchPickingResolver } from './scan-product-batch-picking'
|
|
13
|
+
import { scanProductPickingResolver } from './scan-product-picking'
|
|
14
|
+
import { sealToteResolver } from './seal-tote'
|
|
12
15
|
import { undoPickingAssigmentResolver } from './undo-picking-assignment'
|
|
13
16
|
import { undoSerialNumberPickingResolver } from './undo-serial-number-picking'
|
|
14
|
-
import { sealToteResolver } from './seal-tote'
|
|
15
|
-
import { replenishmentPickingResolver } from './replenishment-picking'
|
|
16
17
|
|
|
17
18
|
export const Mutations = {
|
|
18
19
|
...assignPickingInventoriesResolver,
|
|
19
20
|
...undoPickingAssigmentResolver,
|
|
20
21
|
...activatePickingResolver,
|
|
22
|
+
...activateBulkPickingResolver,
|
|
21
23
|
...activateBatchPickingResolver,
|
|
22
24
|
...pickingResolver,
|
|
23
25
|
...scanProductPickingResolver,
|
|
@@ -29,5 +31,5 @@ export const Mutations = {
|
|
|
29
31
|
...fetchAndAssignPickingTaskResolver,
|
|
30
32
|
...undoSerialNumberPickingResolver,
|
|
31
33
|
...sealToteResolver,
|
|
32
|
-
...replenishmentPickingResolver
|
|
34
|
+
...replenishmentPickingResolver,
|
|
33
35
|
}
|
|
@@ -169,6 +169,10 @@ export const Mutation = /* GraphQL */ `
|
|
|
169
169
|
worksheetNo: String!
|
|
170
170
|
): Worksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|
|
171
171
|
|
|
172
|
+
activateBulkPicking (
|
|
173
|
+
worksheetNo: [String!]!
|
|
174
|
+
): [Worksheet] @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|
|
175
|
+
|
|
172
176
|
activatePickingReplenishment (
|
|
173
177
|
worksheetNo: String!
|
|
174
178
|
): Worksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|