@things-factory/sales-base 3.6.47 → 3.6.51
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/entities/index.js +28 -22
- package/dist-server/entities/index.js.map +1 -1
- package/dist-server/entities/order-reverse-kitting.js +156 -0
- package/dist-server/entities/order-reverse-kitting.js.map +1 -0
- package/dist-server/entities/reverse-kitting-order.js +82 -0
- package/dist-server/entities/reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/index.js +14 -11
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/order-reverse-kitting/index.js +8 -0
- package/dist-server/graphql/resolvers/order-reverse-kitting/index.js.map +1 -0
- package/dist-server/graphql/resolvers/order-reverse-kitting/order-reverse-kitting.js +18 -0
- package/dist-server/graphql/resolvers/order-reverse-kitting/order-reverse-kitting.js.map +1 -0
- package/dist-server/graphql/resolvers/order-reverse-kitting/order-reverse-kittings.js +14 -0
- package/dist-server/graphql/resolvers/order-reverse-kitting/order-reverse-kittings.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/activate-reverse-kitting-order.js +31 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/activate-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.js +31 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.js +34 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/confirm-reverse-kitting-order.js +31 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/confirm-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.js +30 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.js +94 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/executing-reverse-kitting-order.js +37 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/executing-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.js +34 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/index.js +17 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/index.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.js +35 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-order.js +32 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-orders.js +25 -0
- package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-orders.js.map +1 -0
- package/dist-server/graphql/types/index.js +22 -14
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/order-reverse-kitting/index.js +14 -0
- package/dist-server/graphql/types/order-reverse-kitting/index.js.map +1 -0
- package/dist-server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.js +31 -0
- package/dist-server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.js.map +1 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-list.js +14 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-list.js.map +1 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.js +32 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.js.map +1 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting.js +37 -0
- package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting.js.map +1 -0
- package/dist-server/graphql/types/reverse-kitting-order/index.js +47 -0
- package/dist-server/graphql/types/reverse-kitting-order/index.js.map +1 -0
- package/dist-server/graphql/types/reverse-kitting-order/new-reverse-kitting-order.js +17 -0
- package/dist-server/graphql/types/reverse-kitting-order/new-reverse-kitting-order.js.map +1 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order-list.js +14 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order-list.js.map +1 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order-patch.js +17 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order-patch.js.map +1 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order.js +24 -0
- package/dist-server/graphql/types/reverse-kitting-order/reverse-kitting-order.js.map +1 -0
- package/dist-server/utils/inventory-util.js +145 -1
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +11 -11
- package/server/entities/index.ts +33 -27
- package/server/entities/order-reverse-kitting.ts +116 -0
- package/server/entities/reverse-kitting-order.ts +68 -0
- package/server/graphql/resolvers/index.ts +14 -11
- package/server/graphql/resolvers/order-reverse-kitting/index.ts +9 -0
- package/server/graphql/resolvers/order-reverse-kitting/order-reverse-kitting.ts +19 -0
- package/server/graphql/resolvers/order-reverse-kitting/order-reverse-kittings.ts +16 -0
- package/server/graphql/resolvers/reverse-kitting-order/activate-reverse-kitting-order.ts +47 -0
- package/server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.ts +47 -0
- package/server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.ts +59 -0
- package/server/graphql/resolvers/reverse-kitting-order/confirm-reverse-kitting-order.ts +47 -0
- package/server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.ts +41 -0
- package/server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.ts +125 -0
- package/server/graphql/resolvers/reverse-kitting-order/executing-reverse-kitting-order.ts +40 -0
- package/server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.ts +60 -0
- package/server/graphql/resolvers/reverse-kitting-order/index.ts +28 -0
- package/server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.ts +37 -0
- package/server/graphql/resolvers/reverse-kitting-order/reverse-kitting-order.ts +34 -0
- package/server/graphql/resolvers/reverse-kitting-order/reverse-kitting-orders.ts +30 -0
- package/server/graphql/types/index.ts +22 -14
- package/server/graphql/types/order-reverse-kitting/index.ts +13 -0
- package/server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.ts +25 -0
- package/server/graphql/types/order-reverse-kitting/order-reverse-kitting-list.ts +8 -0
- package/server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.ts +26 -0
- package/server/graphql/types/order-reverse-kitting/order-reverse-kitting.ts +31 -0
- package/server/graphql/types/reverse-kitting-order/index.ts +46 -0
- package/server/graphql/types/reverse-kitting-order/new-reverse-kitting-order.ts +11 -0
- package/server/graphql/types/reverse-kitting-order/reverse-kitting-order-list.ts +8 -0
- package/server/graphql/types/reverse-kitting-order/reverse-kitting-order-patch.ts +11 -0
- package/server/graphql/types/reverse-kitting-order/reverse-kitting-order.ts +18 -0
- package/server/utils/inventory-util.ts +227 -3
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Column,
|
|
3
|
+
CreateDateColumn,
|
|
4
|
+
Entity,
|
|
5
|
+
Index,
|
|
6
|
+
ManyToOne,
|
|
7
|
+
OneToMany,
|
|
8
|
+
PrimaryGeneratedColumn,
|
|
9
|
+
UpdateDateColumn
|
|
10
|
+
} from 'typeorm'
|
|
11
|
+
|
|
12
|
+
import { User } from '@things-factory/auth-base'
|
|
13
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
14
|
+
import { Domain } from '@things-factory/shell'
|
|
15
|
+
|
|
16
|
+
import { OrderReverseKitting } from './order-reverse-kitting'
|
|
17
|
+
|
|
18
|
+
@Entity()
|
|
19
|
+
@Index(
|
|
20
|
+
'ix_reverse-kitting-order_0',
|
|
21
|
+
(reverseKittingOrder: ReverseKittingOrder) => [reverseKittingOrder.domain, reverseKittingOrder.name],
|
|
22
|
+
{ unique: true }
|
|
23
|
+
)
|
|
24
|
+
export class ReverseKittingOrder {
|
|
25
|
+
@PrimaryGeneratedColumn('uuid')
|
|
26
|
+
id: string
|
|
27
|
+
|
|
28
|
+
@ManyToOne(type => Domain)
|
|
29
|
+
domain: Domain
|
|
30
|
+
|
|
31
|
+
@ManyToOne(type => Bizplace)
|
|
32
|
+
bizplace: Bizplace
|
|
33
|
+
|
|
34
|
+
@Column()
|
|
35
|
+
name: string
|
|
36
|
+
|
|
37
|
+
@Column({
|
|
38
|
+
nullable: true
|
|
39
|
+
})
|
|
40
|
+
description: string
|
|
41
|
+
|
|
42
|
+
@OneToMany(type => OrderReverseKitting, orderReverseKitting => orderReverseKitting.reverseKittingOrder)
|
|
43
|
+
orderReverseKittings: OrderReverseKitting[]
|
|
44
|
+
|
|
45
|
+
@Column({
|
|
46
|
+
nullable: true
|
|
47
|
+
})
|
|
48
|
+
remark: String
|
|
49
|
+
|
|
50
|
+
@Column()
|
|
51
|
+
status: string
|
|
52
|
+
|
|
53
|
+
@CreateDateColumn()
|
|
54
|
+
createdAt: Date
|
|
55
|
+
|
|
56
|
+
@UpdateDateColumn()
|
|
57
|
+
updatedAt: Date
|
|
58
|
+
|
|
59
|
+
@ManyToOne(type => User, {
|
|
60
|
+
nullable: true
|
|
61
|
+
})
|
|
62
|
+
creator: User
|
|
63
|
+
|
|
64
|
+
@ManyToOne(type => User, {
|
|
65
|
+
nullable: true
|
|
66
|
+
})
|
|
67
|
+
updater: User
|
|
68
|
+
}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import * as ArrivalNotice from './arrival-notice'
|
|
2
|
+
import * as Claim from './claim'
|
|
3
|
+
import * as ClaimDetail from './claim-detail'
|
|
4
|
+
import * as ClaimOrder from './claim-order'
|
|
2
5
|
import * as CollectionOrder from './collection-order'
|
|
3
6
|
import * as DeliveryOrder from './delivery-order'
|
|
4
|
-
import * as
|
|
7
|
+
import * as GoodsReceivalNote from './goods-receival-note'
|
|
5
8
|
import * as InventoryCheck from './inventory-check'
|
|
9
|
+
import * as Invoice from './invoice'
|
|
6
10
|
import * as JobSheet from './job-sheet'
|
|
7
|
-
import * as OrderProduct from './order-product'
|
|
8
11
|
import * as OrderInventory from './order-inventory'
|
|
12
|
+
import * as OrderProduct from './order-product'
|
|
9
13
|
import * as OrderVas from './order-vas'
|
|
14
|
+
import * as Others from './others'
|
|
10
15
|
import * as PurchaseOrder from './purchase-order'
|
|
11
16
|
import * as PurchaseOrderOtherCharge from './purchase-order-other-charge'
|
|
12
|
-
import * as ShippingOrder from './shipping-order'
|
|
13
17
|
import * as ReleaseGood from './release-good'
|
|
14
|
-
import * as ReturnOrder from './return-order'
|
|
15
18
|
import * as RetailReplenishmentOrder from './retail-replenishment-order'
|
|
19
|
+
import * as ReturnOrder from './return-order'
|
|
20
|
+
import * as ReverseKittingOrder from './reverse-kitting-order'
|
|
21
|
+
import * as ShippingOrder from './shipping-order'
|
|
16
22
|
import * as TransferOrder from './transfer-order'
|
|
17
23
|
import * as Vas from './vas'
|
|
18
|
-
import * as Claim from './claim'
|
|
19
|
-
import * as ClaimDetail from './claim-detail'
|
|
20
|
-
import * as ClaimOrder from './claim-order'
|
|
21
24
|
import * as VasOrder from './vas-order'
|
|
22
|
-
import * as GoodsReceivalNote from './goods-receival-note'
|
|
23
|
-
import * as Others from './others'
|
|
24
25
|
|
|
25
26
|
export const queries = [
|
|
26
27
|
Invoice.Query,
|
|
@@ -45,7 +46,8 @@ export const queries = [
|
|
|
45
46
|
ClaimOrder.Query,
|
|
46
47
|
VasOrder.Query,
|
|
47
48
|
GoodsReceivalNote.Query,
|
|
48
|
-
Others.Query
|
|
49
|
+
Others.Query,
|
|
50
|
+
ReverseKittingOrder.Query
|
|
49
51
|
]
|
|
50
52
|
|
|
51
53
|
export const mutations = [
|
|
@@ -71,5 +73,6 @@ export const mutations = [
|
|
|
71
73
|
ClaimOrder.Mutation,
|
|
72
74
|
VasOrder.Mutation,
|
|
73
75
|
GoodsReceivalNote.Mutation,
|
|
74
|
-
Others.Mutation
|
|
76
|
+
Others.Mutation,
|
|
77
|
+
ReverseKittingOrder.Mutation
|
|
75
78
|
]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { orderReverseKittingResolver } from './order-reverse-kitting'
|
|
2
|
+
import { orderReverseKittingsResolver } from './order-reverse-kittings'
|
|
3
|
+
|
|
4
|
+
export const Query = {
|
|
5
|
+
...orderReverseKittingResolver,
|
|
6
|
+
...orderReverseKittingsResolver
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const Mutation = {}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { Domain } from '@things-factory/shell'
|
|
4
|
+
|
|
5
|
+
import { OrderReverseKitting } from '../../../entities'
|
|
6
|
+
|
|
7
|
+
export const orderReverseKittingResolver = {
|
|
8
|
+
async orderReverseKitting(_: any, { name }, context: any) {
|
|
9
|
+
const { domain }: { domain: Domain } = context.state
|
|
10
|
+
|
|
11
|
+
return await getRepository(OrderReverseKitting).findOne({
|
|
12
|
+
where: {
|
|
13
|
+
domain,
|
|
14
|
+
name
|
|
15
|
+
},
|
|
16
|
+
relations: ['domain', 'reverseKittingOrder', 'vas', 'inventory', 'creator', 'updater']
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { convertListParams, ListParam } from '@things-factory/shell'
|
|
4
|
+
|
|
5
|
+
import { OrderReverseKitting } from '../../../entities'
|
|
6
|
+
|
|
7
|
+
export const orderReverseKittingsResolver = {
|
|
8
|
+
async orderReverseKittings(_: any, params: ListParam, context: any) {
|
|
9
|
+
const convertedParams = convertListParams(params)
|
|
10
|
+
const [items, total] = await getRepository(OrderReverseKitting).findAndCount({
|
|
11
|
+
...convertedParams,
|
|
12
|
+
relations: ['domain', 'reverseKittingOrder', 'vas', 'inventory', 'creator', 'updater']
|
|
13
|
+
})
|
|
14
|
+
return { items, total }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { ORDER_STATUS, ORDER_VAS_STATUS } from '../../../constants'
|
|
7
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
8
|
+
|
|
9
|
+
export const activateReverseKittingOrderResolver = {
|
|
10
|
+
async activateReverseKittingOrder(_: any, { name }, context: any) {
|
|
11
|
+
const { tx }: { tx: EntityManager } = context.state
|
|
12
|
+
const reverseKittingOrder: ReverseKittingOrder = await activateReverseKittingOrderFunction(name, context, tx)
|
|
13
|
+
|
|
14
|
+
return reverseKittingOrder
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function activateReverseKittingOrderFunction(
|
|
19
|
+
name: string,
|
|
20
|
+
context: any,
|
|
21
|
+
tx?: EntityManager
|
|
22
|
+
): Promise<ReverseKittingOrder> {
|
|
23
|
+
const { user, domain }: { user: User; domain: Domain } = context.state
|
|
24
|
+
|
|
25
|
+
const foundReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).findOne({
|
|
26
|
+
where: { domain, name, status: ORDER_STATUS.READY_TO_EXECUTE },
|
|
27
|
+
relations: ['bizplace', 'orderReverseKittings', 'creator', 'updater']
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
let foundORKs: OrderReverseKitting[] = foundReverseKittingOrder.orderReverseKittings
|
|
31
|
+
|
|
32
|
+
if (!foundReverseKittingOrder) throw new Error(`Reverse kitting order doesn't exists.`)
|
|
33
|
+
|
|
34
|
+
// 1. Reverse Kitting Order Status change (PENDING => PENDING_RECEIVE)
|
|
35
|
+
const reverseKitting: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).save({
|
|
36
|
+
...foundReverseKittingOrder,
|
|
37
|
+
status: ORDER_STATUS.EXECUTING,
|
|
38
|
+
updater: user
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
foundORKs = foundORKs.map((ork: OrderReverseKitting) => {
|
|
42
|
+
return { ...ork, status: ORDER_VAS_STATUS.PROCESSING }
|
|
43
|
+
})
|
|
44
|
+
await tx.getRepository(OrderReverseKitting).save(foundORKs)
|
|
45
|
+
|
|
46
|
+
return reverseKitting
|
|
47
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { ORDER_STATUS, ORDER_VAS_STATUS } from '../../../constants'
|
|
7
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
8
|
+
|
|
9
|
+
export const cancelReverseKittingOrderResolver = {
|
|
10
|
+
async cancelReverseKittingOrder(_: any, { name }, context: any) {
|
|
11
|
+
const { tx }: { tx: EntityManager } = context.state
|
|
12
|
+
const reverseKittingOrder: ReverseKittingOrder = await cancelReverseKittingOrderFunction(name, context, tx)
|
|
13
|
+
|
|
14
|
+
return reverseKittingOrder
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function cancelReverseKittingOrderFunction(
|
|
19
|
+
name: string,
|
|
20
|
+
context: any,
|
|
21
|
+
tx?: EntityManager
|
|
22
|
+
): Promise<ReverseKittingOrder> {
|
|
23
|
+
const { user, domain }: { user: User; domain: Domain } = context.state
|
|
24
|
+
|
|
25
|
+
const foundReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).findOne({
|
|
26
|
+
where: { domain, name, status: ORDER_STATUS.READY_TO_EXECUTE },
|
|
27
|
+
relations: ['bizplace', 'orderReverseKittings', 'creator', 'updater']
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
let foundORKs: OrderReverseKitting[] = foundReverseKittingOrder.orderReverseKittings
|
|
31
|
+
|
|
32
|
+
if (!foundReverseKittingOrder) throw new Error(`Reverse kitting order doesn't exists.`)
|
|
33
|
+
|
|
34
|
+
// 1. Reverse Kitting Order Status change (PENDING => PENDING_RECEIVE)
|
|
35
|
+
const reverseKitting: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).save({
|
|
36
|
+
...foundReverseKittingOrder,
|
|
37
|
+
status: ORDER_STATUS.CANCELLED,
|
|
38
|
+
updater: user
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
foundORKs = foundORKs.map((ork: OrderReverseKitting) => {
|
|
42
|
+
return { ...ork, status: ORDER_VAS_STATUS.CANCELLED }
|
|
43
|
+
})
|
|
44
|
+
await tx.getRepository(OrderReverseKitting).save(foundORKs)
|
|
45
|
+
|
|
46
|
+
return reverseKitting
|
|
47
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
|
|
6
|
+
|
|
7
|
+
import { ORDER_STATUS, ORDER_VAS_STATUS } from '../../../constants'
|
|
8
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
9
|
+
import { InventoryUtil } from '../../../utils'
|
|
10
|
+
|
|
11
|
+
export const completeReverseKittingOrderResolver = {
|
|
12
|
+
async completeReverseKittingOrder(_: any, { name }, context: any) {
|
|
13
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
14
|
+
|
|
15
|
+
let foundReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).findOne({
|
|
16
|
+
where: { domain, name, status: ORDER_STATUS.EXECUTING },
|
|
17
|
+
relations: ['bizplace', 'orderReverseKittings', 'orderReverseKittings.inventory', 'creator', 'updater']
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
if (!foundReverseKittingOrder) throw new Error(foundReverseKittingOrder.name + ` not found`)
|
|
21
|
+
|
|
22
|
+
let orderReverseKittings: OrderReverseKitting[] = foundReverseKittingOrder.orderReverseKittings
|
|
23
|
+
|
|
24
|
+
await Promise.all(
|
|
25
|
+
orderReverseKittings.map(async orderReverseKitting => {
|
|
26
|
+
let inventory: Inventory = orderReverseKitting.inventory
|
|
27
|
+
inventory.qty = inventory.qty - orderReverseKitting.qty
|
|
28
|
+
inventory.uomValue = inventory.uomValue - orderReverseKitting.uomValue
|
|
29
|
+
|
|
30
|
+
await InventoryUtil.transactionInventory(
|
|
31
|
+
inventory,
|
|
32
|
+
foundReverseKittingOrder,
|
|
33
|
+
-orderReverseKitting.qty,
|
|
34
|
+
-orderReverseKitting.uomValue,
|
|
35
|
+
INVENTORY_TRANSACTION_TYPE.REVERSE_KITTING,
|
|
36
|
+
user,
|
|
37
|
+
tx
|
|
38
|
+
)
|
|
39
|
+
})
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
orderReverseKittings = orderReverseKittings.map(orderReverseKitting => {
|
|
43
|
+
return {
|
|
44
|
+
...orderReverseKitting,
|
|
45
|
+
status: ORDER_VAS_STATUS.TERMINATED,
|
|
46
|
+
updater: user
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
await tx.getRepository(OrderReverseKitting).save(orderReverseKittings)
|
|
51
|
+
|
|
52
|
+
foundReverseKittingOrder.status = ORDER_STATUS.DONE
|
|
53
|
+
foundReverseKittingOrder.updater = user
|
|
54
|
+
|
|
55
|
+
await tx.getRepository(ReverseKittingOrder).save(foundReverseKittingOrder)
|
|
56
|
+
|
|
57
|
+
return true
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { ORDER_STATUS, ORDER_VAS_STATUS } from '../../../constants'
|
|
7
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
8
|
+
|
|
9
|
+
export const confirmReverseKittingOrderResolver = {
|
|
10
|
+
async confirmReverseKittingOrder(_: any, { name }, context: any) {
|
|
11
|
+
const { tx }: { tx: EntityManager } = context.state
|
|
12
|
+
const reverseKittingOrder: ReverseKittingOrder = await confirmReverseKittingOrderFunction(name, context, tx)
|
|
13
|
+
|
|
14
|
+
return reverseKittingOrder
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function confirmReverseKittingOrderFunction(
|
|
19
|
+
name: string,
|
|
20
|
+
context: any,
|
|
21
|
+
tx?: EntityManager
|
|
22
|
+
): Promise<ReverseKittingOrder> {
|
|
23
|
+
const { user, domain }: { user: User; domain: Domain } = context.state
|
|
24
|
+
|
|
25
|
+
const foundReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).findOne({
|
|
26
|
+
where: { domain, name, status: ORDER_STATUS.PENDING },
|
|
27
|
+
relations: ['bizplace', 'orderReverseKittings', 'creator', 'updater']
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
let foundORKs: OrderReverseKitting[] = foundReverseKittingOrder.orderReverseKittings
|
|
31
|
+
|
|
32
|
+
if (!foundReverseKittingOrder) throw new Error(`Reverse kitting order doesn't exists.`)
|
|
33
|
+
|
|
34
|
+
// 1. Reverse Kitting Order Status change (PENDING => READY_TO_EXECUTE)
|
|
35
|
+
const reverseKitting: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).save({
|
|
36
|
+
...foundReverseKittingOrder,
|
|
37
|
+
status: ORDER_STATUS.READY_TO_EXECUTE,
|
|
38
|
+
updater: user
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
foundORKs = foundORKs.map((ork: OrderReverseKitting) => {
|
|
42
|
+
return { ...ork, status: ORDER_VAS_STATUS.READY_TO_PROCESS }
|
|
43
|
+
})
|
|
44
|
+
await tx.getRepository(OrderReverseKitting).save(foundORKs)
|
|
45
|
+
|
|
46
|
+
return reverseKitting
|
|
47
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { EntityManager, In } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
7
|
+
|
|
8
|
+
export const deleteReverseKittingOrderResolver = {
|
|
9
|
+
async deleteReverseKittingOrder(_: any, { name }, context: any) {
|
|
10
|
+
const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
|
|
11
|
+
|
|
12
|
+
return await deleteReverseKittingOrder(tx, name, user, domain)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export async function deleteReverseKittingOrder(
|
|
17
|
+
tx: EntityManager,
|
|
18
|
+
name: string,
|
|
19
|
+
user: User,
|
|
20
|
+
domain: Domain
|
|
21
|
+
): Promise<boolean> {
|
|
22
|
+
let foundReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).findOne({
|
|
23
|
+
where: { domain, name },
|
|
24
|
+
relations: ['bizplace', 'orderReverseKittings', 'creator', 'updater']
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
if (!foundReverseKittingOrder) throw new Error(`Reverse kitting order doesn't exists.`)
|
|
28
|
+
|
|
29
|
+
const foundORKs: OrderReverseKitting[] = foundReverseKittingOrder.orderReverseKittings
|
|
30
|
+
|
|
31
|
+
// 1. delete order reverse kittings
|
|
32
|
+
const productIds = foundORKs.map((ork: OrderReverseKitting) => ork.id)
|
|
33
|
+
if (productIds.length) {
|
|
34
|
+
await tx.getRepository(OrderReverseKitting).delete({ id: In(productIds) })
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// 2. delete Reverse Kitting Order
|
|
38
|
+
await tx.getRepository(ReverseKittingOrder).delete({ domain, name })
|
|
39
|
+
|
|
40
|
+
return true
|
|
41
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { EntityManager, Equal, In, Not } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
|
|
5
|
+
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
6
|
+
import { Domain } from '@things-factory/shell'
|
|
7
|
+
import {
|
|
8
|
+
Inventory,
|
|
9
|
+
INVENTORY_STATUS,
|
|
10
|
+
INVENTORY_TRANSACTION_TYPE,
|
|
11
|
+
InventoryNoGenerator,
|
|
12
|
+
Location,
|
|
13
|
+
LOCATION_TYPE,
|
|
14
|
+
Warehouse
|
|
15
|
+
} from '@things-factory/warehouse-base'
|
|
16
|
+
|
|
17
|
+
import { ORDER_VAS_STATUS } from '../../../constants'
|
|
18
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
19
|
+
import { InventoryUtil } from '../../../utils'
|
|
20
|
+
|
|
21
|
+
export const executeReverseKittingResolver = {
|
|
22
|
+
async executeReverseKitting(_: any, { name, inventory }, context: any) {
|
|
23
|
+
const { tx }: { tx: EntityManager } = context.state
|
|
24
|
+
await executeReverseKittingFunction(name, inventory, context, tx)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export async function executeReverseKittingFunction(
|
|
29
|
+
name: string,
|
|
30
|
+
inventory: Partial<Inventory>,
|
|
31
|
+
context: any,
|
|
32
|
+
tx?: EntityManager
|
|
33
|
+
): Promise<void> {
|
|
34
|
+
const { user, domain }: { user: User; domain: Domain } = context.state
|
|
35
|
+
|
|
36
|
+
let orderReverseKitting: OrderReverseKitting = await tx.getRepository(OrderReverseKitting).findOne({
|
|
37
|
+
where: {
|
|
38
|
+
name,
|
|
39
|
+
domain,
|
|
40
|
+
status: Not(Equal(ORDER_VAS_STATUS.READY_TO_PROCESS))
|
|
41
|
+
},
|
|
42
|
+
relations: ['bizplace', 'reverseKittingOrder', 'reverseKittingOrder.bizplace', 'inventory']
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
const foundReverseKittingOrder: ReverseKittingOrder = orderReverseKitting.reverseKittingOrder
|
|
46
|
+
if (!foundReverseKittingOrder) throw new Error(`Reverse kitting order doesn't exists.`)
|
|
47
|
+
|
|
48
|
+
const customerBizplace: Bizplace = foundReverseKittingOrder.bizplace
|
|
49
|
+
const customerCompanyBizplace: Bizplace = await getCompanyBizplace(null, null, customerBizplace.id)
|
|
50
|
+
|
|
51
|
+
const productDetail: ProductDetail = await tx.getRepository(ProductDetail).findOne({
|
|
52
|
+
where: {
|
|
53
|
+
domain: customerCompanyBizplace.domain,
|
|
54
|
+
id: inventory.productDetailId
|
|
55
|
+
},
|
|
56
|
+
relations: ['product']
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
const location: Location = await tx.getRepository(Location).findOne({
|
|
60
|
+
where: {
|
|
61
|
+
domain,
|
|
62
|
+
name: inventory.locationName,
|
|
63
|
+
type: In([LOCATION_TYPE.SHELF, LOCATION_TYPE.BUFFER, LOCATION_TYPE.FLOOR])
|
|
64
|
+
},
|
|
65
|
+
relations: ['warehouse']
|
|
66
|
+
})
|
|
67
|
+
if (!location) throw new Error(inventory.locationName + ' not exists')
|
|
68
|
+
|
|
69
|
+
const palletId: string = inventory.palletId
|
|
70
|
+
await InventoryUtil.checkPalletDuplication(inventory.palletId, domain, tx)
|
|
71
|
+
|
|
72
|
+
const product: Product = productDetail.product
|
|
73
|
+
const packingType: string = productDetail.packingType
|
|
74
|
+
const packingSize: number = productDetail.packingSize
|
|
75
|
+
const uom: string = productDetail.uom
|
|
76
|
+
const qty: number = inventory.qty
|
|
77
|
+
const uomValue: number = Math.round(qty * productDetail.uomValue * 100) / 100
|
|
78
|
+
const batchId: string = orderReverseKitting.inventory.batchId
|
|
79
|
+
const orderId: string = foundReverseKittingOrder.id
|
|
80
|
+
const warehouse: Warehouse = location.warehouse
|
|
81
|
+
const zone: string = location.zone
|
|
82
|
+
|
|
83
|
+
let newInventory: Partial<Inventory> = new Inventory()
|
|
84
|
+
newInventory.bizplace = customerBizplace
|
|
85
|
+
newInventory.name = InventoryNoGenerator.inventoryName()
|
|
86
|
+
newInventory.orderVasId = orderReverseKitting.id
|
|
87
|
+
newInventory.palletId = palletId
|
|
88
|
+
newInventory.batchId = batchId
|
|
89
|
+
newInventory.product = product
|
|
90
|
+
newInventory.packingType = packingType
|
|
91
|
+
newInventory.packingSize = packingSize
|
|
92
|
+
newInventory.uom = uom
|
|
93
|
+
newInventory.qty = qty
|
|
94
|
+
newInventory.uomValue = uomValue
|
|
95
|
+
newInventory.refOrderId = orderId
|
|
96
|
+
newInventory.warehouse = warehouse
|
|
97
|
+
newInventory.location = location
|
|
98
|
+
newInventory.zone = zone
|
|
99
|
+
newInventory.status = INVENTORY_STATUS.STORED
|
|
100
|
+
newInventory.domain = domain
|
|
101
|
+
newInventory.creator = user
|
|
102
|
+
newInventory.updater = user
|
|
103
|
+
|
|
104
|
+
newInventory = await InventoryUtil.transactionInventory(
|
|
105
|
+
newInventory,
|
|
106
|
+
foundReverseKittingOrder,
|
|
107
|
+
newInventory.qty,
|
|
108
|
+
newInventory.uomValue,
|
|
109
|
+
INVENTORY_TRANSACTION_TYPE.REVERSE_KITTING,
|
|
110
|
+
user,
|
|
111
|
+
tx
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
let operationGuide: any = JSON.parse(orderReverseKitting.operationGuide)
|
|
115
|
+
let productCombinationSets: any[] = operationGuide.data.productCombinationSets
|
|
116
|
+
operationGuide.data.productCombinationSets = productCombinationSets.map(item => {
|
|
117
|
+
if (item.productDetailId == inventory.productDetailId) {
|
|
118
|
+
item.actualQty++
|
|
119
|
+
}
|
|
120
|
+
return item
|
|
121
|
+
})
|
|
122
|
+
orderReverseKitting.operationGuide = JSON.stringify(operationGuide)
|
|
123
|
+
|
|
124
|
+
await tx.getRepository(OrderReverseKitting).save(orderReverseKitting)
|
|
125
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getRepository, In } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { ORDER_STATUS } from '../../../constants'
|
|
8
|
+
import { ReverseKittingOrder } from '../../../entities'
|
|
9
|
+
|
|
10
|
+
export const executingReverseKittingOrderResolver = {
|
|
11
|
+
async executingReverseKittingOrder(_: any, { name }, context: any) {
|
|
12
|
+
const { domain, user }: { domain: Domain; user: User } = context.state
|
|
13
|
+
|
|
14
|
+
const reverseKittingOrder: ReverseKittingOrder = await getRepository(ReverseKittingOrder).findOne({
|
|
15
|
+
where: {
|
|
16
|
+
domain,
|
|
17
|
+
name,
|
|
18
|
+
status: ORDER_STATUS.EXECUTING,
|
|
19
|
+
bizplace: In(await getPermittedBizplaceIds(domain, user))
|
|
20
|
+
},
|
|
21
|
+
relations: [
|
|
22
|
+
'domain',
|
|
23
|
+
'bizplace',
|
|
24
|
+
'orderReverseKittings',
|
|
25
|
+
'orderReverseKittings.vas',
|
|
26
|
+
'orderReverseKittings.inventory',
|
|
27
|
+
'orderReverseKittings.inventory.product',
|
|
28
|
+
'orderReverseKittings.inventory.location',
|
|
29
|
+
'orderReverseKittings.inventory.warehouse',
|
|
30
|
+
'orderReverseKittings.targetProduct',
|
|
31
|
+
'creator',
|
|
32
|
+
'updater'
|
|
33
|
+
]
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
if (!reverseKittingOrder) throw new Error(`Reverse Kitting Order not exists`)
|
|
37
|
+
|
|
38
|
+
return reverseKittingOrder
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { Inventory } from '@things-factory/warehouse-base'
|
|
7
|
+
|
|
8
|
+
import { ORDER_STATUS, ORDER_TYPES, ORDER_VAS_STATUS } from '../../../constants'
|
|
9
|
+
import { OrderReverseKitting, ReverseKittingOrder } from '../../../entities'
|
|
10
|
+
import { OrderNoGenerator } from '../../../utils/order-no-generator'
|
|
11
|
+
|
|
12
|
+
export const generateReverseKittingOrder = {
|
|
13
|
+
async generateReverseKittingOrder(_: any, { reverseKittingOrder }, context: any) {
|
|
14
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
15
|
+
|
|
16
|
+
const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
|
|
17
|
+
where: {
|
|
18
|
+
id: reverseKittingOrder.customerBizplaceId
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
if (!customerBizplace) throw new Error('company is not found')
|
|
23
|
+
|
|
24
|
+
let orderReverseKittings: OrderReverseKitting[] = reverseKittingOrder.orderReverseKittings
|
|
25
|
+
|
|
26
|
+
// 1. Create reverse kitting order
|
|
27
|
+
const createdReverseKittingOrder: ReverseKittingOrder = await tx.getRepository(ReverseKittingOrder).save({
|
|
28
|
+
...reverseKittingOrder,
|
|
29
|
+
name: OrderNoGenerator.vasOrder(),
|
|
30
|
+
domain,
|
|
31
|
+
bizplace: customerBizplace,
|
|
32
|
+
status: ORDER_STATUS.PENDING,
|
|
33
|
+
creator: user,
|
|
34
|
+
updater: user
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// 2. Create Reverse Kitting Order Items
|
|
38
|
+
orderReverseKittings = await Promise.all(
|
|
39
|
+
orderReverseKittings.map(async (ork: OrderReverseKitting) => {
|
|
40
|
+
if (ork?.inventory?.id) {
|
|
41
|
+
ork.inventory = await tx.getRepository(Inventory).findOne(ork.inventory.id)
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
...ork,
|
|
45
|
+
domain,
|
|
46
|
+
name: OrderNoGenerator.orderVas(),
|
|
47
|
+
reverseKittingOrder: createdReverseKittingOrder,
|
|
48
|
+
bizplace: customerBizplace,
|
|
49
|
+
type: ORDER_TYPES.VAS_ORDER,
|
|
50
|
+
status: ORDER_VAS_STATUS.PENDING,
|
|
51
|
+
creator: user,
|
|
52
|
+
updater: user
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
)
|
|
56
|
+
await tx.getRepository(OrderReverseKitting).save(orderReverseKittings)
|
|
57
|
+
|
|
58
|
+
return createdReverseKittingOrder
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { activateReverseKittingOrderResolver } from './activate-reverse-kitting-order'
|
|
2
|
+
import { cancelReverseKittingOrderResolver } from './cancel-reverse-kitting-order'
|
|
3
|
+
import { completeReverseKittingOrderResolver } from './complete-reverse-kitting-order'
|
|
4
|
+
import { confirmReverseKittingOrderResolver } from './confirm-reverse-kitting-order'
|
|
5
|
+
import { deleteReverseKittingOrderResolver } from './delete-reverse-kitting-order'
|
|
6
|
+
import { executeReverseKittingResolver } from './execute-reverse-kitting'
|
|
7
|
+
import { executingReverseKittingOrderResolver } from './executing-reverse-kitting-order'
|
|
8
|
+
import { generateReverseKittingOrder } from './generate-reverse-kitting-order'
|
|
9
|
+
import { reverseKittingInventoriesResolver } from './reverse-kitting-inventories'
|
|
10
|
+
import { reverseKittingOrderResolver } from './reverse-kitting-order'
|
|
11
|
+
import { reverseKittingOrdersResolver } from './reverse-kitting-orders'
|
|
12
|
+
|
|
13
|
+
export const Query = {
|
|
14
|
+
...reverseKittingOrdersResolver,
|
|
15
|
+
...reverseKittingOrderResolver,
|
|
16
|
+
...executingReverseKittingOrderResolver,
|
|
17
|
+
...reverseKittingInventoriesResolver
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const Mutation = {
|
|
21
|
+
...generateReverseKittingOrder,
|
|
22
|
+
...confirmReverseKittingOrderResolver,
|
|
23
|
+
...activateReverseKittingOrderResolver,
|
|
24
|
+
...deleteReverseKittingOrderResolver,
|
|
25
|
+
...cancelReverseKittingOrderResolver,
|
|
26
|
+
...executeReverseKittingResolver,
|
|
27
|
+
...completeReverseKittingOrderResolver
|
|
28
|
+
}
|