@things-factory/sales-base 4.3.769 → 4.3.771
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/draft-release-good/draft-release-good-create.js +138 -139
- package/dist-server/service/draft-release-good/draft-release-good-create.js.map +1 -1
- package/dist-server/service/index.js +16 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/loading-package-items/index.js +9 -0
- package/dist-server/service/loading-package-items/index.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-mutation.js +120 -0
- package/dist-server/service/loading-package-items/loading-package-items-mutation.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-query.js +87 -0
- package/dist-server/service/loading-package-items/loading-package-items-query.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-type.js +77 -0
- package/dist-server/service/loading-package-items/loading-package-items-type.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items.js +173 -0
- package/dist-server/service/loading-package-items/loading-package-items.js.map +1 -0
- package/dist-server/service/loading-packages/index.js +9 -0
- package/dist-server/service/loading-packages/index.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-mutation.js +151 -0
- package/dist-server/service/loading-packages/loading-packages-mutation.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-query.js +316 -0
- package/dist-server/service/loading-packages/loading-packages-query.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-type.js +77 -0
- package/dist-server/service/loading-packages/loading-packages-type.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages.js +138 -0
- package/dist-server/service/loading-packages/loading-packages.js.map +1 -0
- package/dist-server/service/order-inventory/order-inventory.js +1 -0
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +48 -15
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +61 -3
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js +15 -1
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +4 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/utils/inventory-util.js +6 -2
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/order-no-generator.js +8 -0
- package/dist-server/utils/order-no-generator.js.map +1 -1
- package/package.json +8 -8
- package/server/service/draft-release-good/draft-release-good-create.ts +201 -206
- package/server/service/index.ts +16 -2
- package/server/service/loading-package-items/index.ts +6 -0
- package/server/service/loading-package-items/loading-package-items-mutation.ts +112 -0
- package/server/service/loading-package-items/loading-package-items-query.ts +43 -0
- package/server/service/loading-package-items/loading-package-items-type.ts +45 -0
- package/server/service/loading-package-items/loading-package-items.ts +140 -0
- package/server/service/loading-packages/index.ts +6 -0
- package/server/service/loading-packages/loading-packages-mutation.ts +150 -0
- package/server/service/loading-packages/loading-packages-query.ts +272 -0
- package/server/service/loading-packages/loading-packages-type.ts +45 -0
- package/server/service/loading-packages/loading-packages.ts +110 -0
- package/server/service/order-inventory/order-inventory.ts +1 -0
- package/server/service/release-good/release-good-mutation.ts +49 -21
- package/server/service/release-good/release-good-query.ts +103 -36
- package/server/service/release-good/release-good-types.ts +9 -0
- package/server/service/release-good/release-good.ts +5 -1
- package/server/utils/inventory-util.ts +7 -2
- package/server/utils/order-no-generator.ts +12 -0
package/server/service/index.ts
CHANGED
|
@@ -49,6 +49,8 @@ import { entities as ShippingOrderEntity, resolvers as ShippingOrderResolvers }
|
|
|
49
49
|
import { entities as TransferOrderEntity, resolvers as TransferOrderResolvers } from './transfer-order'
|
|
50
50
|
import { entities as VasEntity, resolvers as VasResolvers } from './vas'
|
|
51
51
|
import { entities as VasOrderEntity, resolvers as VasOrderResolvers } from './vas-order'
|
|
52
|
+
import { entities as LoadingPackagesEntities, resolvers as LoadingPackagesResolvers } from './loading-packages'
|
|
53
|
+
import { entities as LoadingPackageItemsEntities, resolvers as LoadingPackageItemsResolvers } from './loading-package-items'
|
|
52
54
|
|
|
53
55
|
/* EXPORT ENTITY TYPES */
|
|
54
56
|
export * from './order-consignment/order-consignment'
|
|
@@ -89,6 +91,8 @@ export * from './shipping-order/shipping-order'
|
|
|
89
91
|
export * from './transfer-order/transfer-order'
|
|
90
92
|
export * from './vas-order/vas-order'
|
|
91
93
|
export * from './vas/vas'
|
|
94
|
+
export * from './loading-packages/loading-packages'
|
|
95
|
+
export * from './loading-package-items/loading-package-items'
|
|
92
96
|
|
|
93
97
|
/* EXPORT TYPES */
|
|
94
98
|
export * from './arrival-notice/arrival-notice-types'
|
|
@@ -123,6 +127,8 @@ export * from './transfer-order/transfer-order-types'
|
|
|
123
127
|
export * from './vas-order/vas-order-types'
|
|
124
128
|
export * from './vas/vas-types'
|
|
125
129
|
export * from './order-vas-item/order-vas-item-type'
|
|
130
|
+
export * from './loading-packages/loading-packages-type'
|
|
131
|
+
export * from './loading-package-items/loading-package-items-type'
|
|
126
132
|
|
|
127
133
|
/* EXPORT MUTATIONS */
|
|
128
134
|
export * from './arrival-notice/arrival-notice-mutation'
|
|
@@ -156,6 +162,8 @@ export * from './transfer-order/transfer-order-mutation'
|
|
|
156
162
|
export * from './vas-order/vas-order-mutation'
|
|
157
163
|
export * from './vas/vas-mutation'
|
|
158
164
|
export * from './release-good-logs/release-good-logs-mutation'
|
|
165
|
+
export * from './loading-packages/loading-packages-mutation'
|
|
166
|
+
export * from './loading-package-items/loading-package-items-mutation'
|
|
159
167
|
|
|
160
168
|
/* EXPORT QUERIES */
|
|
161
169
|
export * from './arrival-notice/arrival-notice-query'
|
|
@@ -189,6 +197,8 @@ export * from './shipping-order/shipping-order-query'
|
|
|
189
197
|
export * from './transfer-order/transfer-order-query'
|
|
190
198
|
export * from './vas-order/vas-order-query'
|
|
191
199
|
export * from './vas/vas-query'
|
|
200
|
+
export * from './loading-packages/loading-packages-query'
|
|
201
|
+
export * from './loading-package-items/loading-package-items-query'
|
|
192
202
|
|
|
193
203
|
export const entities = [
|
|
194
204
|
/* ENTITIES */
|
|
@@ -229,7 +239,9 @@ export const entities = [
|
|
|
229
239
|
...ShippingOrderEntity,
|
|
230
240
|
...TransferOrderEntity,
|
|
231
241
|
...VasEntity,
|
|
232
|
-
...VasOrderEntity
|
|
242
|
+
...VasOrderEntity,
|
|
243
|
+
...LoadingPackagesEntities,
|
|
244
|
+
...LoadingPackageItemsEntities,
|
|
233
245
|
]
|
|
234
246
|
|
|
235
247
|
export const schema = {
|
|
@@ -273,7 +285,9 @@ export const schema = {
|
|
|
273
285
|
...ShippingOrderResolvers,
|
|
274
286
|
...TransferOrderResolvers,
|
|
275
287
|
...VasResolvers,
|
|
276
|
-
...VasOrderResolvers
|
|
288
|
+
...VasOrderResolvers,
|
|
289
|
+
...LoadingPackagesResolvers,
|
|
290
|
+
...LoadingPackageItemsResolvers,
|
|
277
291
|
]
|
|
278
292
|
}
|
|
279
293
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LoadingPackageItems } from './loading-package-items'
|
|
2
|
+
import { LoadingPackageItemsQuery } from './loading-package-items-query'
|
|
3
|
+
import { LoadingPackageItemsMutation } from './loading-package-items-mutation'
|
|
4
|
+
|
|
5
|
+
export const entities = [LoadingPackageItems]
|
|
6
|
+
export const resolvers = [LoadingPackageItemsQuery, LoadingPackageItemsMutation]
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
|
|
2
|
+
import { getRepository, In } from 'typeorm'
|
|
3
|
+
import { LoadingPackageItems } from './loading-package-items'
|
|
4
|
+
import { NewLoadingPackageItems, LoadingPackageItemsPatch } from './loading-package-items-type'
|
|
5
|
+
|
|
6
|
+
@Resolver(LoadingPackageItems)
|
|
7
|
+
export class LoadingPackageItemsMutation {
|
|
8
|
+
@Directive('@transaction')
|
|
9
|
+
@Mutation(returns => LoadingPackageItems, { description: 'To create new LoadingPackageItems' })
|
|
10
|
+
async createLoadingPackageItems(@Arg('loadingPackageItems') loadingPackageItems: NewLoadingPackageItems, @Ctx() context: any): Promise<LoadingPackageItems> {
|
|
11
|
+
const { domain, user, tx } = context.state
|
|
12
|
+
|
|
13
|
+
return await tx.getRepository(LoadingPackageItems).save({
|
|
14
|
+
...loadingPackageItems,
|
|
15
|
+
domain,
|
|
16
|
+
creator: user,
|
|
17
|
+
updater: user
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Directive('@transaction')
|
|
22
|
+
@Mutation(returns => LoadingPackageItems, { description: 'To modify LoadingPackageItems information' })
|
|
23
|
+
async updateLoadingPackageItems(
|
|
24
|
+
@Arg('id') id: string,
|
|
25
|
+
@Arg('patch') patch: LoadingPackageItemsPatch,
|
|
26
|
+
@Ctx() context: any
|
|
27
|
+
): Promise<LoadingPackageItems> {
|
|
28
|
+
const { domain, user, tx } = context.state
|
|
29
|
+
|
|
30
|
+
const repository = tx.getRepository(LoadingPackageItems)
|
|
31
|
+
const loadingPackageItems = await repository.findOne({
|
|
32
|
+
where: { domain, id }
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
return await repository.save({
|
|
36
|
+
...loadingPackageItems,
|
|
37
|
+
...patch,
|
|
38
|
+
updater: user
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Directive('@transaction')
|
|
43
|
+
@Mutation(returns => [LoadingPackageItems], { description: "To modify multiple LoadingPackageItems' information" })
|
|
44
|
+
async updateMultipleLoadingPackageItems(
|
|
45
|
+
@Arg('patches', type => [LoadingPackageItemsPatch]) patches: LoadingPackageItemsPatch[],
|
|
46
|
+
@Ctx() context: any
|
|
47
|
+
): Promise<LoadingPackageItems[]> {
|
|
48
|
+
const { domain, user, tx } = context.state
|
|
49
|
+
|
|
50
|
+
let results = []
|
|
51
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
52
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
53
|
+
const loadingPackageItemsRepo = tx.getRepository(LoadingPackageItems)
|
|
54
|
+
|
|
55
|
+
if (_createRecords.length > 0) {
|
|
56
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
57
|
+
const newRecord = _createRecords[i]
|
|
58
|
+
|
|
59
|
+
const result = await loadingPackageItemsRepo.save({
|
|
60
|
+
...newRecord,
|
|
61
|
+
domain,
|
|
62
|
+
creator: user,
|
|
63
|
+
updater: user
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
results.push({ ...result, cuFlag: '+' })
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (_updateRecords.length > 0) {
|
|
71
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
72
|
+
const newRecord = _updateRecords[i]
|
|
73
|
+
const loadingPackageItems = await loadingPackageItemsRepo.findOne(newRecord.id)
|
|
74
|
+
|
|
75
|
+
const result = await loadingPackageItemsRepo.save({
|
|
76
|
+
...loadingPackageItems,
|
|
77
|
+
...newRecord,
|
|
78
|
+
updater: user
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return results
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@Directive('@transaction')
|
|
89
|
+
@Mutation(returns => Boolean, { description: 'To delete LoadingPackageItems' })
|
|
90
|
+
async deleteLoadingPackageItems(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
|
|
91
|
+
const { domain, tx } = context.state
|
|
92
|
+
|
|
93
|
+
await tx.getRepository(LoadingPackageItems).delete({ domain, id })
|
|
94
|
+
return true
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Directive('@transaction')
|
|
98
|
+
@Mutation(returns => Boolean, { description: 'To delete multiple loadingPackageItemss' })
|
|
99
|
+
async deleteMultipleLoadingPackageItems(
|
|
100
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
101
|
+
@Ctx() context: any
|
|
102
|
+
): Promise<boolean> {
|
|
103
|
+
const { domain, tx } = context.state
|
|
104
|
+
|
|
105
|
+
await tx.getRepository(LoadingPackageItems).delete({
|
|
106
|
+
domain,
|
|
107
|
+
id: In(ids)
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
return true
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
|
|
2
|
+
import { getRepository } from 'typeorm'
|
|
3
|
+
import { Domain, ListParam, convertListParams } from '@things-factory/shell'
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { LoadingPackageItems } from './loading-package-items'
|
|
6
|
+
import { LoadingPackageItemsList } from './loading-package-items-type'
|
|
7
|
+
|
|
8
|
+
@Resolver(LoadingPackageItems)
|
|
9
|
+
export class LoadingPackageItemsQuery {
|
|
10
|
+
@Query(returns => LoadingPackageItems, { description: 'To fetch a LoadingPackageItems' })
|
|
11
|
+
async loadingPackageItem(@Arg('id') id: string, @Ctx() context: any): Promise<LoadingPackageItems> {
|
|
12
|
+
const { domain } = context.state
|
|
13
|
+
|
|
14
|
+
return await getRepository(LoadingPackageItems).findOne({
|
|
15
|
+
where: { domain, id }
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@Query(returns => LoadingPackageItemsList, { description: 'To fetch multiple LoadingPackageItems' })
|
|
20
|
+
async loadingPackageItems(@Args() params: ListParam, @Ctx() context: any): Promise<LoadingPackageItemsList> {
|
|
21
|
+
const { domain } = context.state
|
|
22
|
+
|
|
23
|
+
const convertedParams = convertListParams(params, domain.id)
|
|
24
|
+
const [items, total] = await getRepository(LoadingPackageItems).findAndCount(convertedParams)
|
|
25
|
+
|
|
26
|
+
return { items, total }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@FieldResolver(type => Domain)
|
|
30
|
+
async domain(@Root() loadingPackageItems: LoadingPackageItems): Promise<Domain> {
|
|
31
|
+
return await getRepository(Domain).findOne(loadingPackageItems.domainId)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@FieldResolver(type => User)
|
|
35
|
+
async updater(@Root() loadingPackageItems: LoadingPackageItems): Promise<User> {
|
|
36
|
+
return await getRepository(User).findOne(loadingPackageItems.updaterId)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@FieldResolver(type => User)
|
|
40
|
+
async creator(@Root() loadingPackageItems: LoadingPackageItems): Promise<User> {
|
|
41
|
+
return await getRepository(User).findOne(loadingPackageItems.creatorId)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
|
|
2
|
+
|
|
3
|
+
import { LoadingPackageItems } from './loading-package-items'
|
|
4
|
+
|
|
5
|
+
@InputType()
|
|
6
|
+
export class NewLoadingPackageItems {
|
|
7
|
+
@Field()
|
|
8
|
+
name: string
|
|
9
|
+
|
|
10
|
+
@Field({ nullable: true })
|
|
11
|
+
description?: string
|
|
12
|
+
|
|
13
|
+
@Field({ nullable: true })
|
|
14
|
+
active?: boolean
|
|
15
|
+
|
|
16
|
+
@Field({ nullable: true })
|
|
17
|
+
params?: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@InputType()
|
|
21
|
+
export class LoadingPackageItemsPatch {
|
|
22
|
+
@Field(type => ID, { nullable: true })
|
|
23
|
+
id?: string
|
|
24
|
+
|
|
25
|
+
@Field({ nullable: true })
|
|
26
|
+
name?: string
|
|
27
|
+
|
|
28
|
+
@Field({ nullable: true })
|
|
29
|
+
description?: string
|
|
30
|
+
|
|
31
|
+
@Field({ nullable: true })
|
|
32
|
+
active?: boolean
|
|
33
|
+
|
|
34
|
+
@Field()
|
|
35
|
+
cuFlag: string
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@ObjectType()
|
|
39
|
+
export class LoadingPackageItemsList {
|
|
40
|
+
@Field(type => [LoadingPackageItems])
|
|
41
|
+
items: LoadingPackageItems[]
|
|
42
|
+
|
|
43
|
+
@Field(type => Int)
|
|
44
|
+
total: number
|
|
45
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateDateColumn,
|
|
3
|
+
UpdateDateColumn,
|
|
4
|
+
Entity,
|
|
5
|
+
Index,
|
|
6
|
+
Column,
|
|
7
|
+
RelationId,
|
|
8
|
+
ManyToOne,
|
|
9
|
+
PrimaryGeneratedColumn
|
|
10
|
+
} from 'typeorm'
|
|
11
|
+
import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
|
|
12
|
+
|
|
13
|
+
import { Domain } from '@things-factory/shell'
|
|
14
|
+
import { User } from '@things-factory/auth-base'
|
|
15
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
16
|
+
import { LoadingPackages, OrderProduct, OrderInventory } from '../'
|
|
17
|
+
import { ProductDetail } from '@things-factory/product-base'
|
|
18
|
+
|
|
19
|
+
@Entity()
|
|
20
|
+
@Index('ix_loading_package_items_0', (loadingPackageItems: LoadingPackageItems) => [loadingPackageItems.domain, loadingPackageItems.name], { unique: true })
|
|
21
|
+
@ObjectType({ description: 'Entity for LoadingPackageItems' })
|
|
22
|
+
export class LoadingPackageItems {
|
|
23
|
+
@PrimaryGeneratedColumn('uuid')
|
|
24
|
+
@Field(type => ID)
|
|
25
|
+
readonly id: string
|
|
26
|
+
|
|
27
|
+
@ManyToOne(type => Domain)
|
|
28
|
+
@Field({ nullable: true })
|
|
29
|
+
domain?: Domain
|
|
30
|
+
|
|
31
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.domain)
|
|
32
|
+
domainId?: string
|
|
33
|
+
|
|
34
|
+
@Column()
|
|
35
|
+
@Field()
|
|
36
|
+
name: string
|
|
37
|
+
|
|
38
|
+
@ManyToOne(type => Bizplace)
|
|
39
|
+
@Field(type => Bizplace, { nullable: true })
|
|
40
|
+
bizplace?: Bizplace
|
|
41
|
+
|
|
42
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.bizplace)
|
|
43
|
+
bizplaceId?: string
|
|
44
|
+
|
|
45
|
+
@ManyToOne(type => LoadingPackages)
|
|
46
|
+
@Field(type => LoadingPackages)
|
|
47
|
+
loadingPackage?: LoadingPackages
|
|
48
|
+
|
|
49
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.loadingPackage)
|
|
50
|
+
loadingPackageId?: string
|
|
51
|
+
|
|
52
|
+
@ManyToOne(type => OrderProduct)
|
|
53
|
+
@Field(type => OrderProduct, { nullable: true })
|
|
54
|
+
orderProduct?: OrderProduct
|
|
55
|
+
|
|
56
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.orderProduct)
|
|
57
|
+
orderProductId?: string
|
|
58
|
+
|
|
59
|
+
@Column({
|
|
60
|
+
nullable: true
|
|
61
|
+
})
|
|
62
|
+
@Field({ nullable: true })
|
|
63
|
+
status?: string
|
|
64
|
+
|
|
65
|
+
@Column({
|
|
66
|
+
type: 'decimal',
|
|
67
|
+
scale: 3,
|
|
68
|
+
nullable: true,
|
|
69
|
+
transformer: {
|
|
70
|
+
to: (value: string | null) => value,
|
|
71
|
+
from: (value: string | null) => {
|
|
72
|
+
if (value === null || value === undefined) return null
|
|
73
|
+
const parsed = parseFloat(value)
|
|
74
|
+
return isNaN(parsed) ? null : parsed
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
@Field({ nullable: true })
|
|
79
|
+
releaseQty: number
|
|
80
|
+
|
|
81
|
+
@Column({
|
|
82
|
+
type: 'decimal',
|
|
83
|
+
scale: 3,
|
|
84
|
+
nullable: true,
|
|
85
|
+
transformer: {
|
|
86
|
+
to: (value: string | null) => value,
|
|
87
|
+
from: (value: string | null) => {
|
|
88
|
+
if (value === null || value === undefined) return null
|
|
89
|
+
const parsed = parseFloat(value)
|
|
90
|
+
return isNaN(parsed) ? null : parsed
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
@Field({ nullable: true })
|
|
95
|
+
packedQty: number
|
|
96
|
+
|
|
97
|
+
@ManyToOne(type => ProductDetail, { nullable: true })
|
|
98
|
+
@Field(type => ProductDetail, { nullable: true })
|
|
99
|
+
productDetail: ProductDetail
|
|
100
|
+
|
|
101
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.productDetail)
|
|
102
|
+
productDetailId?: string
|
|
103
|
+
|
|
104
|
+
@CreateDateColumn()
|
|
105
|
+
@Field({ nullable: true })
|
|
106
|
+
createdAt?: Date
|
|
107
|
+
|
|
108
|
+
@UpdateDateColumn()
|
|
109
|
+
@Field({ nullable: true })
|
|
110
|
+
updatedAt?: Date
|
|
111
|
+
|
|
112
|
+
@ManyToOne(type => User, {
|
|
113
|
+
nullable: true
|
|
114
|
+
})
|
|
115
|
+
@Field({ nullable: true })
|
|
116
|
+
creator?: User
|
|
117
|
+
|
|
118
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.creator)
|
|
119
|
+
creatorId?: string
|
|
120
|
+
|
|
121
|
+
@ManyToOne(type => User, {
|
|
122
|
+
nullable: true
|
|
123
|
+
})
|
|
124
|
+
@Field({ nullable: true })
|
|
125
|
+
updater?: User
|
|
126
|
+
|
|
127
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.updater)
|
|
128
|
+
updaterId?: string
|
|
129
|
+
|
|
130
|
+
@Column({ nullable: true })
|
|
131
|
+
@Field({ nullable: true })
|
|
132
|
+
deletedAt?: Date
|
|
133
|
+
|
|
134
|
+
@ManyToOne(type => User, { nullable: true })
|
|
135
|
+
@Field({ nullable: true })
|
|
136
|
+
deletedBy?: User
|
|
137
|
+
|
|
138
|
+
@RelationId((loadingPackageItems: LoadingPackageItems) => loadingPackageItems.deletedBy)
|
|
139
|
+
deletedById?: string
|
|
140
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LoadingPackages } from './loading-packages'
|
|
2
|
+
import { LoadingPackagesQuery } from './loading-packages-query'
|
|
3
|
+
import { LoadingPackagesMutation } from './loading-packages-mutation'
|
|
4
|
+
|
|
5
|
+
export const entities = [LoadingPackages]
|
|
6
|
+
export const resolvers = [LoadingPackagesQuery, LoadingPackagesMutation]
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
|
|
2
|
+
import { getRepository, In, IsNull } from 'typeorm'
|
|
3
|
+
import { LoadingPackages } from './loading-packages'
|
|
4
|
+
import { LoadingPackageItems } from '../loading-package-items/loading-package-items'
|
|
5
|
+
import { NewLoadingPackages, LoadingPackagesPatch } from './loading-packages-type'
|
|
6
|
+
|
|
7
|
+
@Resolver(LoadingPackages)
|
|
8
|
+
export class LoadingPackagesMutation {
|
|
9
|
+
@Directive('@transaction')
|
|
10
|
+
@Mutation(returns => LoadingPackages, { description: 'To create new LoadingPackages' })
|
|
11
|
+
async createLoadingPackages(@Arg('loadingPackages') loadingPackages: NewLoadingPackages, @Ctx() context: any): Promise<LoadingPackages> {
|
|
12
|
+
const { domain, user, tx } = context.state
|
|
13
|
+
|
|
14
|
+
return await tx.getRepository(LoadingPackages).save({
|
|
15
|
+
...loadingPackages,
|
|
16
|
+
domain,
|
|
17
|
+
creator: user,
|
|
18
|
+
updater: user
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@Directive('@transaction')
|
|
23
|
+
@Mutation(returns => LoadingPackages, { description: 'To modify LoadingPackages information' })
|
|
24
|
+
async updateLoadingPackages(
|
|
25
|
+
@Arg('id') id: string,
|
|
26
|
+
@Arg('patch') patch: LoadingPackagesPatch,
|
|
27
|
+
@Ctx() context: any
|
|
28
|
+
): Promise<LoadingPackages> {
|
|
29
|
+
const { domain, user, tx } = context.state
|
|
30
|
+
|
|
31
|
+
const repository = tx.getRepository(LoadingPackages)
|
|
32
|
+
const loadingPackages = await repository.findOne({
|
|
33
|
+
where: { domain, id }
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
return await repository.save({
|
|
37
|
+
...loadingPackages,
|
|
38
|
+
...patch,
|
|
39
|
+
updater: user
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Directive('@transaction')
|
|
44
|
+
@Mutation(returns => [LoadingPackages], { description: "To modify multiple LoadingPackages' information" })
|
|
45
|
+
async updateMultipleLoadingPackages(
|
|
46
|
+
@Arg('patches', type => [LoadingPackagesPatch]) patches: LoadingPackagesPatch[],
|
|
47
|
+
@Ctx() context: any
|
|
48
|
+
): Promise<LoadingPackages[]> {
|
|
49
|
+
const { domain, user, tx } = context.state
|
|
50
|
+
|
|
51
|
+
let results = []
|
|
52
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
53
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
54
|
+
const loadingPackagesRepo = tx.getRepository(LoadingPackages)
|
|
55
|
+
|
|
56
|
+
if (_createRecords.length > 0) {
|
|
57
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
58
|
+
const newRecord = _createRecords[i]
|
|
59
|
+
|
|
60
|
+
const result = await loadingPackagesRepo.save({
|
|
61
|
+
...newRecord,
|
|
62
|
+
domain,
|
|
63
|
+
creator: user,
|
|
64
|
+
updater: user
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
results.push({ ...result, cuFlag: '+' })
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (_updateRecords.length > 0) {
|
|
72
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
73
|
+
const newRecord = _updateRecords[i]
|
|
74
|
+
const loadingPackages = await loadingPackagesRepo.findOne(newRecord.id)
|
|
75
|
+
|
|
76
|
+
const result = await loadingPackagesRepo.save({
|
|
77
|
+
...loadingPackages,
|
|
78
|
+
...newRecord,
|
|
79
|
+
updater: user
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return results
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Directive('@transaction')
|
|
90
|
+
@Mutation(returns => Boolean, { description: 'To delete LoadingPackages' })
|
|
91
|
+
async deleteLoadingPackages(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
|
|
92
|
+
const { domain, tx } = context.state
|
|
93
|
+
|
|
94
|
+
await tx.getRepository(LoadingPackages).delete({ domain, id })
|
|
95
|
+
return true
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@Directive('@transaction')
|
|
99
|
+
@Mutation(returns => Boolean, { description: 'To undo (soft delete) LoadingPackages' })
|
|
100
|
+
async undoLoadingPackages(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
|
|
101
|
+
const { domain, user, tx } = context.state
|
|
102
|
+
|
|
103
|
+
// Find the loading package with its items
|
|
104
|
+
const loadingPackage = await tx.getRepository(LoadingPackages).findOne({
|
|
105
|
+
where: { domain, id },
|
|
106
|
+
relations: ['loadingPackageItems']
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
if (!loadingPackage) {
|
|
110
|
+
throw new Error('Loading package not found')
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Use same timestamp for both package and items
|
|
114
|
+
const deletedAt = new Date()
|
|
115
|
+
|
|
116
|
+
// Soft delete the loading package
|
|
117
|
+
await tx.getRepository(LoadingPackages).save({
|
|
118
|
+
...loadingPackage,
|
|
119
|
+
deletedAt,
|
|
120
|
+
deletedBy: user
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
// Soft delete all related loading package items in a single query
|
|
124
|
+
if (loadingPackage.loadingPackageItems && loadingPackage.loadingPackageItems.length > 0) {
|
|
125
|
+
const itemIds = loadingPackage.loadingPackageItems.map(item => item.id)
|
|
126
|
+
await tx.getRepository(LoadingPackageItems).update(
|
|
127
|
+
{ id: In(itemIds) },
|
|
128
|
+
{ deletedAt, deletedBy: user }
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return true
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@Directive('@transaction')
|
|
136
|
+
@Mutation(returns => Boolean, { description: 'To delete multiple loadingPackagess' })
|
|
137
|
+
async deleteMultipleLoadingPackages(
|
|
138
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
139
|
+
@Ctx() context: any
|
|
140
|
+
): Promise<boolean> {
|
|
141
|
+
const { domain, tx } = context.state
|
|
142
|
+
|
|
143
|
+
await tx.getRepository(LoadingPackages).delete({
|
|
144
|
+
domain,
|
|
145
|
+
id: In(ids)
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
return true
|
|
149
|
+
}
|
|
150
|
+
}
|