@things-factory/sales-base 4.3.144 → 4.3.151
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/service/index.js +39 -25
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/manifest/manifest-mutation.js +13 -9
- package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
- package/dist-server/service/manifest/manifest-query.js +14 -24
- package/dist-server/service/manifest/manifest-query.js.map +1 -1
- package/dist-server/service/order-package/index.js +9 -0
- package/dist-server/service/order-package/index.js.map +1 -0
- package/dist-server/service/order-package/order-package-mutation.js +120 -0
- package/dist-server/service/order-package/order-package-mutation.js.map +1 -0
- package/dist-server/service/order-package/order-package-query.js +119 -0
- package/dist-server/service/order-package/order-package-query.js.map +1 -0
- package/dist-server/service/order-package/order-package-types.js +105 -0
- package/dist-server/service/order-package/order-package-types.js.map +1 -0
- package/dist-server/service/order-package/order-package.js +153 -0
- package/dist-server/service/order-package/order-package.js.map +1 -0
- package/dist-server/service/order-package-item/index.js +9 -0
- package/dist-server/service/order-package-item/index.js.map +1 -0
- package/dist-server/service/order-package-item/order-package-item-mutation.js +120 -0
- package/dist-server/service/order-package-item/order-package-item-mutation.js.map +1 -0
- package/dist-server/service/order-package-item/order-package-item-query.js +126 -0
- package/dist-server/service/order-package-item/order-package-item-query.js.map +1 -0
- package/dist-server/service/order-package-item/order-package-item-types.js +87 -0
- package/dist-server/service/order-package-item/order-package-item-types.js.map +1 -0
- package/dist-server/service/order-package-item/order-package-item.js +123 -0
- package/dist-server/service/order-package-item/order-package-item.js.map +1 -0
- package/dist-server/service/order-product/order-product.js +6 -0
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +15 -4
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +15 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/utils/order-no-generator.js +7 -0
- package/dist-server/utils/order-no-generator.js.map +1 -1
- package/package.json +14 -14
- package/server/service/index.ts +41 -29
- package/server/service/manifest/manifest-mutation.ts +18 -9
- package/server/service/manifest/manifest-query.ts +22 -30
- package/server/service/order-package/index.ts +6 -0
- package/server/service/order-package/order-package-mutation.ts +113 -0
- package/server/service/order-package/order-package-query.ts +86 -0
- package/server/service/order-package/order-package-types.ts +66 -0
- package/server/service/order-package/order-package.ts +123 -0
- package/server/service/order-package-item/index.ts +6 -0
- package/server/service/order-package-item/order-package-item-mutation.ts +113 -0
- package/server/service/order-package-item/order-package-item-query.ts +89 -0
- package/server/service/order-package-item/order-package-item-types.ts +51 -0
- package/server/service/order-package-item/order-package-item.ts +102 -0
- package/server/service/order-product/order-product.ts +5 -0
- package/server/service/release-good/release-good-query.ts +26 -10
- package/server/service/release-good/release-good.ts +17 -4
- package/server/utils/order-no-generator.ts +11 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
+
import { getRepository, In } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
6
|
+
import { Domain, Filter, Pagination, Sorting } from '@things-factory/shell'
|
|
7
|
+
|
|
8
|
+
import { OrderPackage } from './order-package'
|
|
9
|
+
import { OrderPackageList } from './order-package-types'
|
|
10
|
+
|
|
11
|
+
@Resolver(OrderPackage)
|
|
12
|
+
export class OrderPackageQuery {
|
|
13
|
+
@Query(returns => OrderPackage, { description: 'To fetch a OrderPackage' })
|
|
14
|
+
async orderPackage(
|
|
15
|
+
@Ctx() context: any,
|
|
16
|
+
@Arg('id', { nullable: true }) id: string,
|
|
17
|
+
@Arg('trackingNo', { nullable: true }) trackingNo: string
|
|
18
|
+
): Promise<OrderPackage> {
|
|
19
|
+
const { domain, user } = context.state
|
|
20
|
+
|
|
21
|
+
if (id) {
|
|
22
|
+
return await getRepository(OrderPackage).findOne({
|
|
23
|
+
where: { domain, id }
|
|
24
|
+
})
|
|
25
|
+
} else if (trackingNo) {
|
|
26
|
+
let orderPackage = await getRepository(OrderPackage).findOne({
|
|
27
|
+
where: {
|
|
28
|
+
domain,
|
|
29
|
+
trackingNo,
|
|
30
|
+
bizplace: In(await getPermittedBizplaceIds(domain, user))
|
|
31
|
+
},
|
|
32
|
+
relations: ['bizplace', 'releaseGood']
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
if (!orderPackage) {
|
|
36
|
+
throw new Error('Tracking No not found in any orders')
|
|
37
|
+
} else {
|
|
38
|
+
return orderPackage
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Query(returns => OrderPackageList, { description: 'To fetch multiple OrderPackages' })
|
|
44
|
+
async orderPackages(
|
|
45
|
+
@Ctx() context: any,
|
|
46
|
+
@Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
|
|
47
|
+
@Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
|
|
48
|
+
@Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
|
|
49
|
+
): Promise<OrderPackageList> {
|
|
50
|
+
const { domain } = context.state
|
|
51
|
+
|
|
52
|
+
const bizplaceIdParam = filters.find(item => item.name === 'bizplaceId')
|
|
53
|
+
const releaseGoodIdParam = filters.find(item => item.name === 'releaseGoodId')
|
|
54
|
+
|
|
55
|
+
let qb = getRepository(OrderPackage)
|
|
56
|
+
.createQueryBuilder('opk')
|
|
57
|
+
.where('opk.domain_id = :domainId', { domainId: domain.id })
|
|
58
|
+
|
|
59
|
+
if (bizplaceIdParam) {
|
|
60
|
+
qb.andWhere('opk.bizplace_id = :bizplaceId', { bizplaceId: bizplaceIdParam.value })
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (releaseGoodIdParam) {
|
|
64
|
+
qb.andWhere('opk.release_good_id = :releaseGoodId', { releaseGoodId: releaseGoodIdParam.value })
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let [items, total] = await qb.getManyAndCount()
|
|
68
|
+
|
|
69
|
+
return { items, total }
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@FieldResolver(type => Domain)
|
|
73
|
+
async domain(@Root() orderPackage: OrderPackage): Promise<Domain> {
|
|
74
|
+
return await getRepository(Domain).findOne(orderPackage.domainId)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@FieldResolver(type => User)
|
|
78
|
+
async updater(@Root() orderPackage: OrderPackage): Promise<User> {
|
|
79
|
+
return await getRepository(User).findOne(orderPackage.updaterId)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@FieldResolver(type => User)
|
|
83
|
+
async creator(@Root() orderPackage: OrderPackage): Promise<User> {
|
|
84
|
+
return await getRepository(User).findOne(orderPackage.creatorId)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
|
+
|
|
3
|
+
import { OrderPackage } from './order-package'
|
|
4
|
+
|
|
5
|
+
@InputType()
|
|
6
|
+
export class NewOrderPackage {
|
|
7
|
+
@Field()
|
|
8
|
+
name: string
|
|
9
|
+
|
|
10
|
+
@Field({ nullable: true })
|
|
11
|
+
packageId: string
|
|
12
|
+
|
|
13
|
+
@Field({ nullable: true })
|
|
14
|
+
transporter: string
|
|
15
|
+
|
|
16
|
+
@Field({ nullable: true })
|
|
17
|
+
trackingNo: string
|
|
18
|
+
|
|
19
|
+
@Field({ nullable: true })
|
|
20
|
+
airwayBill: string
|
|
21
|
+
|
|
22
|
+
@Field({ nullable: true })
|
|
23
|
+
invoice: string
|
|
24
|
+
|
|
25
|
+
@Field({ nullable: true })
|
|
26
|
+
status?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@InputType()
|
|
30
|
+
export class OrderPackagePatch {
|
|
31
|
+
@Field(type => ID, { nullable: true })
|
|
32
|
+
id?: string
|
|
33
|
+
|
|
34
|
+
@Field({ nullable: true })
|
|
35
|
+
name?: string
|
|
36
|
+
|
|
37
|
+
@Field({ nullable: true })
|
|
38
|
+
packageId: string
|
|
39
|
+
|
|
40
|
+
@Field({ nullable: true })
|
|
41
|
+
transporter: string
|
|
42
|
+
|
|
43
|
+
@Field({ nullable: true })
|
|
44
|
+
trackingNo: string
|
|
45
|
+
|
|
46
|
+
@Field({ nullable: true })
|
|
47
|
+
airwayBill: string
|
|
48
|
+
|
|
49
|
+
@Field({ nullable: true })
|
|
50
|
+
invoice: string
|
|
51
|
+
|
|
52
|
+
@Field({ nullable: true })
|
|
53
|
+
status?: string
|
|
54
|
+
|
|
55
|
+
@Field()
|
|
56
|
+
cuFlag: string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@ObjectType()
|
|
60
|
+
export class OrderPackageList {
|
|
61
|
+
@Field(type => [OrderPackage])
|
|
62
|
+
items: OrderPackage[]
|
|
63
|
+
|
|
64
|
+
@Field(type => Int)
|
|
65
|
+
total: number
|
|
66
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
+
import {
|
|
3
|
+
Column,
|
|
4
|
+
CreateDateColumn,
|
|
5
|
+
Entity,
|
|
6
|
+
Index,
|
|
7
|
+
ManyToOne,
|
|
8
|
+
OneToMany,
|
|
9
|
+
PrimaryGeneratedColumn,
|
|
10
|
+
RelationId,
|
|
11
|
+
UpdateDateColumn
|
|
12
|
+
} from 'typeorm'
|
|
13
|
+
|
|
14
|
+
import { User } from '@things-factory/auth-base'
|
|
15
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
16
|
+
import { Domain } from '@things-factory/shell'
|
|
17
|
+
|
|
18
|
+
import { Manifest, OrderPackageItem, ReleaseGood } from '../'
|
|
19
|
+
|
|
20
|
+
@Entity()
|
|
21
|
+
@Index('ix_order_package_0', (orderPackage: OrderPackage) => [orderPackage.domain, orderPackage.name], { unique: true })
|
|
22
|
+
@Index('ix_order_package_1', (orderPackage: OrderPackage) => [orderPackage.releaseGood, orderPackage.packageId], { unique: true })
|
|
23
|
+
@ObjectType({ description: 'Entity for OrderPackage' })
|
|
24
|
+
export class OrderPackage {
|
|
25
|
+
@PrimaryGeneratedColumn('uuid')
|
|
26
|
+
@Field(type => ID)
|
|
27
|
+
readonly id: string
|
|
28
|
+
|
|
29
|
+
@ManyToOne(type => Domain)
|
|
30
|
+
@Field({ nullable: true })
|
|
31
|
+
domain?: Domain
|
|
32
|
+
|
|
33
|
+
@RelationId((orderPackage: OrderPackage) => orderPackage.domain)
|
|
34
|
+
domainId?: string
|
|
35
|
+
|
|
36
|
+
@ManyToOne(type => Bizplace)
|
|
37
|
+
@Field(type => Bizplace, { nullable: true })
|
|
38
|
+
bizplace?: Bizplace
|
|
39
|
+
|
|
40
|
+
@RelationId((orderPackage: OrderPackage) => orderPackage.bizplace)
|
|
41
|
+
bizplaceId?: string
|
|
42
|
+
|
|
43
|
+
@ManyToOne(type => ReleaseGood)
|
|
44
|
+
@Field(type => ReleaseGood, { nullable: true })
|
|
45
|
+
releaseGood?: ReleaseGood
|
|
46
|
+
|
|
47
|
+
@ManyToOne(type => Manifest)
|
|
48
|
+
@Field(type => Manifest, { nullable: true })
|
|
49
|
+
manifest: Manifest
|
|
50
|
+
|
|
51
|
+
@OneToMany(type => OrderPackageItem, orderPackageItem => orderPackageItem.orderPackage)
|
|
52
|
+
@Field(type => [OrderPackageItem], { nullable: true })
|
|
53
|
+
orderPackageItems: OrderPackageItem[]
|
|
54
|
+
|
|
55
|
+
@Column()
|
|
56
|
+
@Field()
|
|
57
|
+
name: string
|
|
58
|
+
|
|
59
|
+
@Column({ nullable: true })
|
|
60
|
+
@Field({ nullable: true })
|
|
61
|
+
packageId: string
|
|
62
|
+
|
|
63
|
+
@Column({ nullable: true })
|
|
64
|
+
@Field({ nullable: true })
|
|
65
|
+
transporter: string
|
|
66
|
+
|
|
67
|
+
@Column({ nullable: true })
|
|
68
|
+
@Field({ nullable: true })
|
|
69
|
+
trackingNo: string
|
|
70
|
+
|
|
71
|
+
@Column({ nullable: true })
|
|
72
|
+
@Field({ nullable: true })
|
|
73
|
+
airwayBill: string
|
|
74
|
+
|
|
75
|
+
@Column({ nullable: true })
|
|
76
|
+
@Field({ nullable: true })
|
|
77
|
+
invoice: string
|
|
78
|
+
|
|
79
|
+
@Column({ nullable: true })
|
|
80
|
+
@Field({ nullable: true })
|
|
81
|
+
manifestedAt: Date
|
|
82
|
+
|
|
83
|
+
@ManyToOne(type => User)
|
|
84
|
+
@Field(type => User, { nullable: true })
|
|
85
|
+
manifestedBy: User
|
|
86
|
+
|
|
87
|
+
@RelationId((orderPackage: OrderPackage) => orderPackage.manifestedBy)
|
|
88
|
+
manifestedById: string
|
|
89
|
+
|
|
90
|
+
@Column({ nullable: true })
|
|
91
|
+
@Field({ nullable: true })
|
|
92
|
+
status: string
|
|
93
|
+
|
|
94
|
+
@CreateDateColumn()
|
|
95
|
+
@Field({ nullable: true })
|
|
96
|
+
createdAt?: Date
|
|
97
|
+
|
|
98
|
+
@UpdateDateColumn()
|
|
99
|
+
@Field({ nullable: true })
|
|
100
|
+
updatedAt?: Date
|
|
101
|
+
|
|
102
|
+
@ManyToOne(type => User, {
|
|
103
|
+
nullable: true
|
|
104
|
+
})
|
|
105
|
+
@Field({ nullable: true })
|
|
106
|
+
creator?: User
|
|
107
|
+
|
|
108
|
+
@RelationId((orderPackage: OrderPackage) => orderPackage.creator)
|
|
109
|
+
creatorId?: string
|
|
110
|
+
|
|
111
|
+
@ManyToOne(type => User, {
|
|
112
|
+
nullable: true
|
|
113
|
+
})
|
|
114
|
+
@Field({ nullable: true })
|
|
115
|
+
updater?: User
|
|
116
|
+
|
|
117
|
+
@RelationId((orderPackage: OrderPackage) => orderPackage.creator)
|
|
118
|
+
updaterId?: string
|
|
119
|
+
|
|
120
|
+
@Column({ nullable: true })
|
|
121
|
+
@Field({ nullable: true })
|
|
122
|
+
marketRtsCallSuccess: Date
|
|
123
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrderPackageItem } from './order-package-item'
|
|
2
|
+
import { OrderPackageItemQuery } from './order-package-item-query'
|
|
3
|
+
import { OrderPackageItemMutation } from './order-package-item-mutation'
|
|
4
|
+
|
|
5
|
+
export const entities = [OrderPackageItem]
|
|
6
|
+
export const resolvers = [OrderPackageItemQuery, OrderPackageItemMutation]
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
+
import { In } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { OrderPackageItem } from './order-package-item'
|
|
5
|
+
import { NewOrderPackageItem, OrderPackageItemPatch } from './order-package-item-types'
|
|
6
|
+
|
|
7
|
+
@Resolver(OrderPackageItem)
|
|
8
|
+
export class OrderPackageItemMutation {
|
|
9
|
+
@Directive('@transaction')
|
|
10
|
+
@Mutation(returns => OrderPackageItem, { description: 'To create new OrderPackageItem' })
|
|
11
|
+
async createOrderPackageItem(
|
|
12
|
+
@Arg('orderPackageItem') orderPackageItem: NewOrderPackageItem,
|
|
13
|
+
@Ctx() context: any
|
|
14
|
+
): Promise<OrderPackageItem> {
|
|
15
|
+
const { domain, user, tx } = context.state
|
|
16
|
+
|
|
17
|
+
return await tx.getRepository(OrderPackageItem).save({
|
|
18
|
+
...orderPackageItem,
|
|
19
|
+
domain,
|
|
20
|
+
creator: user,
|
|
21
|
+
updater: user
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Directive('@transaction')
|
|
26
|
+
@Mutation(returns => OrderPackageItem, { description: 'To modify OrderPackageItem information' })
|
|
27
|
+
async updateOrderPackageItem(
|
|
28
|
+
@Arg('id') id: string,
|
|
29
|
+
@Arg('patch') patch: OrderPackageItemPatch,
|
|
30
|
+
@Ctx() context: any
|
|
31
|
+
): Promise<OrderPackageItem> {
|
|
32
|
+
const { domain, user, tx } = context.state
|
|
33
|
+
|
|
34
|
+
const repository = tx.getRepository(OrderPackageItem)
|
|
35
|
+
const orderPackageItem = await repository.findOne({
|
|
36
|
+
where: { domain, id }
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
return await repository.save({
|
|
40
|
+
...orderPackageItem,
|
|
41
|
+
...patch,
|
|
42
|
+
updater: user
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@Directive('@transaction')
|
|
47
|
+
@Mutation(returns => [OrderPackageItem], { description: "To modify multiple OrderPackageItems' information" })
|
|
48
|
+
async updateMultipleOrderPackageItem(
|
|
49
|
+
@Arg('patches', type => [OrderPackageItemPatch]) patches: OrderPackageItemPatch[],
|
|
50
|
+
@Ctx() context: any
|
|
51
|
+
): Promise<OrderPackageItem[]> {
|
|
52
|
+
const { domain, user, tx } = context.state
|
|
53
|
+
|
|
54
|
+
let results = []
|
|
55
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
56
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
57
|
+
const orderPackageItemRepo = tx.getRepository(OrderPackageItem)
|
|
58
|
+
|
|
59
|
+
if (_createRecords.length > 0) {
|
|
60
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
61
|
+
const newRecord = _createRecords[i]
|
|
62
|
+
|
|
63
|
+
const result = await orderPackageItemRepo.save({
|
|
64
|
+
...newRecord,
|
|
65
|
+
domain,
|
|
66
|
+
creator: user,
|
|
67
|
+
updater: user
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
results.push({ ...result, cuFlag: '+' })
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (_updateRecords.length > 0) {
|
|
75
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
76
|
+
const newRecord = _updateRecords[i]
|
|
77
|
+
const orderPackageItem = await orderPackageItemRepo.findOne(newRecord.id)
|
|
78
|
+
|
|
79
|
+
const result = await orderPackageItemRepo.save({
|
|
80
|
+
...orderPackageItem,
|
|
81
|
+
...newRecord,
|
|
82
|
+
updater: user
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return results
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@Directive('@transaction')
|
|
93
|
+
@Mutation(returns => Boolean, { description: 'To delete OrderPackageItem' })
|
|
94
|
+
async deleteOrderPackageItem(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
|
|
95
|
+
const { domain, tx } = context.state
|
|
96
|
+
|
|
97
|
+
await tx.getRepository(OrderPackageItem).delete({ domain, id })
|
|
98
|
+
return true
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@Directive('@transaction')
|
|
102
|
+
@Mutation(returns => Boolean, { description: 'To delete multiple orderPackageItems' })
|
|
103
|
+
async deleteOrderPackageItems(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<boolean> {
|
|
104
|
+
const { domain, tx } = context.state
|
|
105
|
+
|
|
106
|
+
await tx.getRepository(OrderPackageItem).delete({
|
|
107
|
+
domain,
|
|
108
|
+
id: In(ids)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
return true
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
+
import { getRepository } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { convertListParams, Domain, Filter, ListParam } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { OrderPackageItem } from './order-package-item'
|
|
8
|
+
import { OrderPackageItemList, TrackingInformation } from './order-package-item-types'
|
|
9
|
+
|
|
10
|
+
@Resolver(OrderPackageItem)
|
|
11
|
+
export class OrderPackageItemQuery {
|
|
12
|
+
@Query(returns => OrderPackageItem, { description: 'To fetch a OrderPackageItem' })
|
|
13
|
+
async orderPackageItem(@Arg('id') id: string, @Ctx() context: any): Promise<OrderPackageItem> {
|
|
14
|
+
const { domain } = context.state
|
|
15
|
+
|
|
16
|
+
return await getRepository(OrderPackageItem).findOne({
|
|
17
|
+
where: { domain, id }
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Query(returns => OrderPackageItemList, { description: 'To fetch multiple OrderPackageItems' })
|
|
22
|
+
async orderPackageItems(@Args() params: ListParam, @Ctx() context: any): Promise<OrderPackageItemList> {
|
|
23
|
+
const { domain } = context.state
|
|
24
|
+
|
|
25
|
+
const convertedParams = convertListParams(params, domain.id)
|
|
26
|
+
const [items, total] = await getRepository(OrderPackageItem).findAndCount(convertedParams)
|
|
27
|
+
|
|
28
|
+
return { items, total }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Query(returns => [TrackingInformation], { description: 'To fetch multiple OrderPackageItems' })
|
|
32
|
+
async orderPackageItemsGroup(
|
|
33
|
+
@Ctx() context: any,
|
|
34
|
+
@Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[]
|
|
35
|
+
): Promise<TrackingInformation[]> {
|
|
36
|
+
const { domain } = context.state
|
|
37
|
+
|
|
38
|
+
const bizplaceIdParam = filters.find(item => item.name === 'bizplaceId')
|
|
39
|
+
const releaseGoodIdParam = filters.find(item => item.name === 'releaseGoodId')
|
|
40
|
+
|
|
41
|
+
let qb = getRepository(OrderPackageItem)
|
|
42
|
+
.createQueryBuilder('opki')
|
|
43
|
+
.select('opk.tracking_no', 'trackingNo')
|
|
44
|
+
.addSelect('prd.sku', 'sku')
|
|
45
|
+
.addSelect('SUM(opki.release_qty)', 'releaseQty')
|
|
46
|
+
.innerJoin('opki.orderPackage', 'opk')
|
|
47
|
+
.innerJoin('opki.orderProduct', 'op')
|
|
48
|
+
.innerJoin('op.product', 'prd')
|
|
49
|
+
.where('opk.domain_id = :domainId', { domainId: domain.id })
|
|
50
|
+
|
|
51
|
+
if (bizplaceIdParam) {
|
|
52
|
+
qb.andWhere('opk.bizplace_id = :bizplaceId', { bizplaceId: bizplaceIdParam.value })
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (releaseGoodIdParam) {
|
|
56
|
+
qb.andWhere('opk.release_good_id = :releaseGoodId', { releaseGoodId: releaseGoodIdParam.value })
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
qb.groupBy('opk.trackingNo')
|
|
60
|
+
qb.addGroupBy('prd.sku')
|
|
61
|
+
|
|
62
|
+
let qbResult: any[] = await qb.getRawMany()
|
|
63
|
+
|
|
64
|
+
let items: any = qbResult.map(itm => {
|
|
65
|
+
return {
|
|
66
|
+
trackingNo: itm.trackingNo,
|
|
67
|
+
sku: itm.sku,
|
|
68
|
+
releaseQty: itm.releaseQty
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
return items
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@FieldResolver(type => Domain)
|
|
76
|
+
async domain(@Root() orderPackageItem: OrderPackageItem): Promise<Domain> {
|
|
77
|
+
return await getRepository(Domain).findOne(orderPackageItem.domainId)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@FieldResolver(type => User)
|
|
81
|
+
async updater(@Root() orderPackageItem: OrderPackageItem): Promise<User> {
|
|
82
|
+
return await getRepository(User).findOne(orderPackageItem.updaterId)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@FieldResolver(type => User)
|
|
86
|
+
async creator(@Root() orderPackageItem: OrderPackageItem): Promise<User> {
|
|
87
|
+
return await getRepository(User).findOne(orderPackageItem.creatorId)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
|
+
|
|
3
|
+
import { OrderPackageItem } from './order-package-item'
|
|
4
|
+
|
|
5
|
+
@InputType()
|
|
6
|
+
export class NewOrderPackageItem {
|
|
7
|
+
@Field()
|
|
8
|
+
name: string
|
|
9
|
+
|
|
10
|
+
@Field({ nullable: true })
|
|
11
|
+
status?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@InputType()
|
|
15
|
+
export class OrderPackageItemPatch {
|
|
16
|
+
@Field(type => ID, { nullable: true })
|
|
17
|
+
id?: string
|
|
18
|
+
|
|
19
|
+
@Field({ nullable: true })
|
|
20
|
+
name?: string
|
|
21
|
+
|
|
22
|
+
@Field({ nullable: true })
|
|
23
|
+
releaseQty?: number
|
|
24
|
+
|
|
25
|
+
@Field({ nullable: true })
|
|
26
|
+
status?: string
|
|
27
|
+
|
|
28
|
+
@Field()
|
|
29
|
+
cuFlag: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@ObjectType()
|
|
33
|
+
export class OrderPackageItemList {
|
|
34
|
+
@Field(type => [OrderPackageItem])
|
|
35
|
+
items: OrderPackageItem[]
|
|
36
|
+
|
|
37
|
+
@Field(type => Int)
|
|
38
|
+
total: number
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@ObjectType()
|
|
42
|
+
export class TrackingInformation {
|
|
43
|
+
@Field(type => String)
|
|
44
|
+
trackingNo: string
|
|
45
|
+
|
|
46
|
+
@Field(type => String)
|
|
47
|
+
sku: string
|
|
48
|
+
|
|
49
|
+
@Field(type => String)
|
|
50
|
+
releaseQty: number
|
|
51
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
+
import {
|
|
3
|
+
Column,
|
|
4
|
+
CreateDateColumn,
|
|
5
|
+
Entity,
|
|
6
|
+
Index,
|
|
7
|
+
ManyToOne,
|
|
8
|
+
PrimaryGeneratedColumn,
|
|
9
|
+
RelationId,
|
|
10
|
+
UpdateDateColumn
|
|
11
|
+
} from 'typeorm'
|
|
12
|
+
|
|
13
|
+
import { User } from '@things-factory/auth-base'
|
|
14
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
15
|
+
import { Domain } from '@things-factory/shell'
|
|
16
|
+
|
|
17
|
+
import { OrderPackage, OrderProduct } from '../'
|
|
18
|
+
|
|
19
|
+
@Entity()
|
|
20
|
+
@Index(
|
|
21
|
+
'ix_order_package_item_0',
|
|
22
|
+
(orderPackageItem: OrderPackageItem) => [orderPackageItem.domain, orderPackageItem.name],
|
|
23
|
+
{ unique: true }
|
|
24
|
+
)
|
|
25
|
+
@ObjectType({ description: 'Entity for OrderPackageItem' })
|
|
26
|
+
export class OrderPackageItem {
|
|
27
|
+
@PrimaryGeneratedColumn('uuid')
|
|
28
|
+
@Field(type => ID)
|
|
29
|
+
readonly id: string
|
|
30
|
+
|
|
31
|
+
@ManyToOne(type => Domain)
|
|
32
|
+
@Field({ nullable: true })
|
|
33
|
+
domain?: Domain
|
|
34
|
+
|
|
35
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.domain)
|
|
36
|
+
domainId?: string
|
|
37
|
+
|
|
38
|
+
@ManyToOne(type => Bizplace)
|
|
39
|
+
@Field(type => Bizplace, { nullable: true })
|
|
40
|
+
bizplace?: Bizplace
|
|
41
|
+
|
|
42
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.bizplace)
|
|
43
|
+
bizplaceId?: string
|
|
44
|
+
|
|
45
|
+
@ManyToOne(type => OrderPackage)
|
|
46
|
+
@Field(type => OrderPackage, { nullable: true })
|
|
47
|
+
orderPackage?: OrderPackage
|
|
48
|
+
|
|
49
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.orderPackage)
|
|
50
|
+
orderPackageId?: string
|
|
51
|
+
|
|
52
|
+
@ManyToOne(type => OrderProduct)
|
|
53
|
+
@Field(type => OrderProduct, { nullable: true })
|
|
54
|
+
orderProduct?: OrderProduct
|
|
55
|
+
|
|
56
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.orderProduct)
|
|
57
|
+
orderProductId?: string
|
|
58
|
+
|
|
59
|
+
@Column()
|
|
60
|
+
@Field()
|
|
61
|
+
name: string
|
|
62
|
+
|
|
63
|
+
@Column({
|
|
64
|
+
nullable: true
|
|
65
|
+
})
|
|
66
|
+
@Field({ nullable: true })
|
|
67
|
+
status?: string
|
|
68
|
+
|
|
69
|
+
@Column({ nullable: true })
|
|
70
|
+
@Field({ nullable: true })
|
|
71
|
+
releaseQty: number
|
|
72
|
+
|
|
73
|
+
@Column({ nullable: true })
|
|
74
|
+
@Field({ nullable: true })
|
|
75
|
+
packedQty: number
|
|
76
|
+
|
|
77
|
+
@CreateDateColumn()
|
|
78
|
+
@Field({ nullable: true })
|
|
79
|
+
createdAt?: Date
|
|
80
|
+
|
|
81
|
+
@UpdateDateColumn()
|
|
82
|
+
@Field({ nullable: true })
|
|
83
|
+
updatedAt?: Date
|
|
84
|
+
|
|
85
|
+
@ManyToOne(type => User, {
|
|
86
|
+
nullable: true
|
|
87
|
+
})
|
|
88
|
+
@Field({ nullable: true })
|
|
89
|
+
creator?: User
|
|
90
|
+
|
|
91
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.creator)
|
|
92
|
+
creatorId?: string
|
|
93
|
+
|
|
94
|
+
@ManyToOne(type => User, {
|
|
95
|
+
nullable: true
|
|
96
|
+
})
|
|
97
|
+
@Field({ nullable: true })
|
|
98
|
+
updater?: User
|
|
99
|
+
|
|
100
|
+
@RelationId((orderPackageItem: OrderPackageItem) => orderPackageItem.creator)
|
|
101
|
+
updaterId?: string
|
|
102
|
+
}
|
|
@@ -22,6 +22,7 @@ import { CollectionOrder } from '../collection-order/collection-order'
|
|
|
22
22
|
import { DeliveryOrder } from '../delivery-order/delivery-order'
|
|
23
23
|
import { DraftReleaseGood } from '../draft-release-good/draft-release-good'
|
|
24
24
|
import { OrderInventory } from '../order-inventory/order-inventory'
|
|
25
|
+
import { OrderPackageItem } from '../order-package-item/order-package-item'
|
|
25
26
|
import { PurchaseOrder } from '../purchase-order/purchase-order'
|
|
26
27
|
import { ReleaseGood } from '../release-good/release-good'
|
|
27
28
|
import { RetailReplenishmentOrder } from '../retail-replenishment-order/retail-replenishment-order'
|
|
@@ -131,6 +132,10 @@ export class OrderProduct {
|
|
|
131
132
|
@Field(type => [OrderInventory], { nullable: true })
|
|
132
133
|
orderInventories: OrderInventory
|
|
133
134
|
|
|
135
|
+
@OneToMany(type => OrderPackageItem, orderPackageItem => orderPackageItem.orderProduct)
|
|
136
|
+
@Field(type => [OrderPackageItem], { nullable: true })
|
|
137
|
+
orderPackageItems: OrderPackageItem[]
|
|
138
|
+
|
|
134
139
|
@ManyToOne(type => RetailReplenishmentOrder)
|
|
135
140
|
@Field(type => RetailReplenishmentOrder, { nullable: true })
|
|
136
141
|
retailReplenishmentOrder: RetailReplenishmentOrder
|