@things-factory/sales-base 8.0.2 → 8.0.5
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/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
- package/server/constants/attachment-type.ts +0 -9
- package/server/constants/index.ts +0 -7
- package/server/constants/load-type.ts +0 -4
- package/server/constants/order.ts +0 -203
- package/server/constants/product-group-type.ts +0 -4
- package/server/constants/release-good.ts +0 -9
- package/server/constants/transfer-order-type.ts +0 -6
- package/server/constants/validation-error-code.ts +0 -3
- package/server/constants/vas-target-type.ts +0 -25
- package/server/controllers/ecommerce/ecommerce-controller.ts +0 -122
- package/server/controllers/ecommerce/index.ts +0 -2
- package/server/controllers/ecommerce/sellercraft-controller.ts +0 -182
- package/server/controllers/index.ts +0 -2
- package/server/controllers/order-controller.ts +0 -296
- package/server/errors/index.ts +0 -1
- package/server/errors/validation-error.ts +0 -25
- package/server/index.ts +0 -5
- package/server/migrations/index.ts +0 -9
- package/server/service/arrival-notice/arrival-notice-mutation.ts +0 -1152
- package/server/service/arrival-notice/arrival-notice-query.ts +0 -549
- package/server/service/arrival-notice/arrival-notice-types.ts +0 -310
- package/server/service/arrival-notice/arrival-notice.ts +0 -202
- package/server/service/arrival-notice/index.ts +0 -9
- package/server/service/claim/claim-mutation.ts +0 -308
- package/server/service/claim/claim-query.ts +0 -122
- package/server/service/claim/claim-types.ts +0 -130
- package/server/service/claim/claim.ts +0 -140
- package/server/service/claim/index.ts +0 -9
- package/server/service/claim-detail/claim-detail-mutation.ts +0 -102
- package/server/service/claim-detail/claim-detail-query.ts +0 -55
- package/server/service/claim-detail/claim-detail-types.ts +0 -47
- package/server/service/claim-detail/claim-detail.ts +0 -69
- package/server/service/claim-detail/index.ts +0 -9
- package/server/service/claim-order/claim-order-mutation.ts +0 -101
- package/server/service/claim-order/claim-order-query.ts +0 -47
- package/server/service/claim-order/claim-order-types.ts +0 -35
- package/server/service/claim-order/claim-order.ts +0 -81
- package/server/service/claim-order/index.ts +0 -9
- package/server/service/collection-order/collection-order-mutation.ts +0 -245
- package/server/service/collection-order/collection-order-query.ts +0 -97
- package/server/service/collection-order/collection-order-types.ts +0 -165
- package/server/service/collection-order/collection-order.ts +0 -135
- package/server/service/collection-order/index.ts +0 -9
- package/server/service/delivery-order/delivery-order-mutation.ts +0 -967
- package/server/service/delivery-order/delivery-order-query.ts +0 -631
- package/server/service/delivery-order/delivery-order-types.ts +0 -268
- package/server/service/delivery-order/delivery-order.ts +0 -258
- package/server/service/delivery-order/index.ts +0 -9
- package/server/service/draft-release-good/draft-release-good-mutation.ts +0 -765
- package/server/service/draft-release-good/draft-release-good-query.ts +0 -354
- package/server/service/draft-release-good/draft-release-good-type.ts +0 -261
- package/server/service/draft-release-good/draft-release-good.ts +0 -284
- package/server/service/draft-release-good/index.ts +0 -9
- package/server/service/goods-receival-note/goods-receival-note-mutation.ts +0 -129
- package/server/service/goods-receival-note/goods-receival-note-query.ts +0 -280
- package/server/service/goods-receival-note/goods-receival-note-types.ts +0 -105
- package/server/service/goods-receival-note/goods-receival-note.ts +0 -127
- package/server/service/goods-receival-note/index.ts +0 -9
- package/server/service/index.ts +0 -238
- package/server/service/inventory-check/index.ts +0 -9
- package/server/service/inventory-check/inventory-check-mutation.ts +0 -149
- package/server/service/inventory-check/inventory-check-query.ts +0 -48
- package/server/service/inventory-check/inventory-check-types.ts +0 -48
- package/server/service/inventory-check/inventory-check.ts +0 -90
- package/server/service/invoice/index.ts +0 -9
- package/server/service/invoice/invoice-mutation.ts +0 -95
- package/server/service/invoice/invoice-query.ts +0 -53
- package/server/service/invoice/invoice-types.ts +0 -279
- package/server/service/invoice/invoice.ts +0 -230
- package/server/service/invoice-product/index.ts +0 -9
- package/server/service/invoice-product/invoice-product-mutation.ts +0 -54
- package/server/service/invoice-product/invoice-product-query.ts +0 -54
- package/server/service/invoice-product/invoice-product-types.ts +0 -84
- package/server/service/invoice-product/invoice-product.ts +0 -92
- package/server/service/job-sheet/index.ts +0 -9
- package/server/service/job-sheet/job-sheet-mutation.ts +0 -92
- package/server/service/job-sheet/job-sheet-query.ts +0 -112
- package/server/service/job-sheet/job-sheet-types.ts +0 -78
- package/server/service/job-sheet/job-sheet.ts +0 -102
- package/server/service/manifest/index.ts +0 -6
- package/server/service/manifest/manifest-mutation.ts +0 -190
- package/server/service/manifest/manifest-query.ts +0 -149
- package/server/service/manifest/manifest-type.ts +0 -84
- package/server/service/manifest/manifest.ts +0 -114
- package/server/service/order-inventory/index.ts +0 -9
- package/server/service/order-inventory/order-inventory-mutation.ts +0 -54
- package/server/service/order-inventory/order-inventory-query.ts +0 -722
- package/server/service/order-inventory/order-inventory-types.ts +0 -238
- package/server/service/order-inventory/order-inventory.ts +0 -401
- package/server/service/order-product/index.ts +0 -9
- package/server/service/order-product/order-product-mutation.ts +0 -48
- package/server/service/order-product/order-product-query.ts +0 -89
- package/server/service/order-product/order-product-types.ts +0 -335
- package/server/service/order-product/order-product.ts +0 -362
- package/server/service/order-tote/index.ts +0 -9
- package/server/service/order-tote/order-tote-mutation.ts +0 -31
- package/server/service/order-tote/order-tote-query.ts +0 -112
- package/server/service/order-tote/order-tote-types.ts +0 -47
- package/server/service/order-tote/order-tote.ts +0 -73
- package/server/service/order-tote-item/index.ts +0 -9
- package/server/service/order-tote-item/order-tote-item-mutation.ts +0 -31
- package/server/service/order-tote-item/order-tote-item-query.ts +0 -82
- package/server/service/order-tote-item/order-tote-item-types.ts +0 -56
- package/server/service/order-tote-item/order-tote-item.ts +0 -72
- package/server/service/order-tote-seal/index.ts +0 -9
- package/server/service/order-tote-seal/order-tote-seal-mutation.ts +0 -31
- package/server/service/order-tote-seal/order-tote-seal-query.ts +0 -59
- package/server/service/order-tote-seal/order-tote-seal-types.ts +0 -41
- package/server/service/order-tote-seal/order-tote-seal.ts +0 -46
- package/server/service/order-vas/index.ts +0 -9
- package/server/service/order-vas/order-vas-mutation.ts +0 -20
- package/server/service/order-vas/order-vas-query.ts +0 -72
- package/server/service/order-vas/order-vas-types.ts +0 -159
- package/server/service/order-vas/order-vas.ts +0 -207
- package/server/service/others/index.ts +0 -5
- package/server/service/others/other-query.ts +0 -563
- package/server/service/others/other-types.ts +0 -115
- package/server/service/purchase-order/index.ts +0 -9
- package/server/service/purchase-order/purchase-order-mutation.ts +0 -458
- package/server/service/purchase-order/purchase-order-query.ts +0 -90
- package/server/service/purchase-order/purchase-order-types.ts +0 -154
- package/server/service/purchase-order/purchase-order.ts +0 -172
- package/server/service/purchase-order-other-charge/index.ts +0 -9
- package/server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.ts +0 -31
- package/server/service/purchase-order-other-charge/purchase-order-other-charge-query.ts +0 -52
- package/server/service/purchase-order-other-charge/purchase-order-other-charge-types.ts +0 -44
- package/server/service/purchase-order-other-charge/purchase-order-other-charge.ts +0 -68
- package/server/service/release-good/index.ts +0 -9
- package/server/service/release-good/release-good-mutation.ts +0 -1686
- package/server/service/release-good/release-good-query.ts +0 -980
- package/server/service/release-good/release-good-types.ts +0 -662
- package/server/service/release-good/release-good.ts +0 -490
- package/server/service/retail-replenishment-order/index.ts +0 -9
- package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +0 -382
- package/server/service/retail-replenishment-order/retail-replenishment-order-query.ts +0 -54
- package/server/service/retail-replenishment-order/retail-replenishment-order-types.ts +0 -101
- package/server/service/retail-replenishment-order/retail-replenishment-order.ts +0 -115
- package/server/service/return-order/index.ts +0 -9
- package/server/service/return-order/return-order-mutation.ts +0 -516
- package/server/service/return-order/return-order-query.ts +0 -226
- package/server/service/return-order/return-order-types.ts +0 -196
- package/server/service/return-order/return-order.ts +0 -127
- package/server/service/reverse-kitting-order/index.ts +0 -9
- package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +0 -500
- package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +0 -197
- package/server/service/reverse-kitting-order/reverse-kitting-order-type.ts +0 -173
- package/server/service/reverse-kitting-order/reverse-kitting-order.ts +0 -121
- package/server/service/reverse-kitting-order-inventory/index.ts +0 -9
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +0 -129
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +0 -52
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.ts +0 -95
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.ts +0 -143
- package/server/service/shipping-order/index.ts +0 -9
- package/server/service/shipping-order/shipping-order-mutation.ts +0 -61
- package/server/service/shipping-order/shipping-order-query.ts +0 -61
- package/server/service/shipping-order/shipping-order-types.ts +0 -89
- package/server/service/shipping-order/shipping-order.ts +0 -129
- package/server/service/transfer-order/index.ts +0 -9
- package/server/service/transfer-order/transfer-order-mutation.ts +0 -309
- package/server/service/transfer-order/transfer-order-query.ts +0 -66
- package/server/service/transfer-order/transfer-order-types.ts +0 -97
- package/server/service/transfer-order/transfer-order.ts +0 -117
- package/server/service/vas/index.ts +0 -9
- package/server/service/vas/vas-mutation.ts +0 -106
- package/server/service/vas/vas-query.ts +0 -60
- package/server/service/vas/vas-types.ts +0 -71
- package/server/service/vas/vas.ts +0 -77
- package/server/service/vas-order/index.ts +0 -9
- package/server/service/vas-order/vas-order-mutation.ts +0 -259
- package/server/service/vas-order/vas-order-query.ts +0 -119
- package/server/service/vas-order/vas-order-types.ts +0 -49
- package/server/service/vas-order/vas-order.ts +0 -81
- package/server/utils/datetime-util.ts +0 -54
- package/server/utils/index.ts +0 -3
- package/server/utils/inventory-util.ts +0 -1155
- package/server/utils/order-no-generator.ts +0 -146
|
@@ -1,516 +0,0 @@
|
|
|
1
|
-
import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
|
|
2
|
-
import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
|
|
3
|
-
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
4
|
-
import { EntityManager, In } from 'typeorm'
|
|
5
|
-
|
|
6
|
-
import { Attachment, createAttachments } from '@things-factory/attachment-base'
|
|
7
|
-
import { Role } from '@things-factory/auth-base'
|
|
8
|
-
import { Bizplace, getDomainUsers } from '@things-factory/biz-base'
|
|
9
|
-
import { Product } from '@things-factory/product-base'
|
|
10
|
-
import { Inventory } from '@things-factory/warehouse-base'
|
|
11
|
-
|
|
12
|
-
import { NewOrderInventory, NewReturnOrder, OrderInventory, OrderVas, ReturnOrderPatch } from '../'
|
|
13
|
-
import { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS, ORDER_VAS_STATUS } from '../../constants'
|
|
14
|
-
import { OrderNoGenerator } from '../../utils'
|
|
15
|
-
import { ReturnOrder } from './return-order'
|
|
16
|
-
|
|
17
|
-
@Resolver(ReturnOrder)
|
|
18
|
-
export class ReturnOrderMutation {
|
|
19
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
20
|
-
@Directive('@transaction')
|
|
21
|
-
@Mutation(returns => Boolean)
|
|
22
|
-
async deleteReturnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
23
|
-
const { tx } = context.state
|
|
24
|
-
|
|
25
|
-
return await deleteReturnOrder(tx, name, context)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
29
|
-
@Directive('@transaction')
|
|
30
|
-
@Mutation(returns => Boolean)
|
|
31
|
-
async deleteReturnOrders(
|
|
32
|
-
@Arg('names', type => [String]) names: string[],
|
|
33
|
-
@Ctx() context: ResolverContext
|
|
34
|
-
): Promise<boolean> {
|
|
35
|
-
const { tx, domain } = context.state
|
|
36
|
-
|
|
37
|
-
await tx.getRepository(ReturnOrder).delete({
|
|
38
|
-
domain: { id: domain.id },
|
|
39
|
-
name: In(names)
|
|
40
|
-
})
|
|
41
|
-
return true
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
45
|
-
@Directive('@transaction')
|
|
46
|
-
@Mutation(returns => ReturnOrder)
|
|
47
|
-
async generateReturnOrder(
|
|
48
|
-
@Ctx() context: ResolverContext,
|
|
49
|
-
@Arg('file', type => [GraphQLUpload], { nullable: true }) file: FileUpload[],
|
|
50
|
-
@Arg('returnOrder', type => NewReturnOrder, { nullable: true }) returnOrder: NewReturnOrder
|
|
51
|
-
): Promise<ReturnOrder> {
|
|
52
|
-
const { tx, domain, user } = context.state
|
|
53
|
-
|
|
54
|
-
const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({ id: returnOrder.customerBizplaceId })
|
|
55
|
-
|
|
56
|
-
let orderInventories: NewOrderInventory[] = returnOrder.orderInventories
|
|
57
|
-
let foundInv = Inventory
|
|
58
|
-
|
|
59
|
-
const mergedOrderInventories = orderInventories.reduce((acc, curr) => {
|
|
60
|
-
let existingItem = acc.find(
|
|
61
|
-
itm =>
|
|
62
|
-
itm.product.id === curr.product.id &&
|
|
63
|
-
itm.packingType === curr.packingType &&
|
|
64
|
-
itm.batchId === curr.batchId &&
|
|
65
|
-
itm.packingSize === curr.packingSize
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
if (!existingItem) {
|
|
69
|
-
acc.push(curr)
|
|
70
|
-
} else {
|
|
71
|
-
existingItem.returnQty = existingItem.returnQty + curr.returnQty
|
|
72
|
-
existingItem.returnUomValue = existingItem.returnUomValue + curr.returnUomValue
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return acc
|
|
76
|
-
}, [])
|
|
77
|
-
|
|
78
|
-
returnOrder.orderInventories = mergedOrderInventories
|
|
79
|
-
|
|
80
|
-
let newReturnOrder: NewReturnOrder = {
|
|
81
|
-
...returnOrder,
|
|
82
|
-
name: OrderNoGenerator.returnOrder(),
|
|
83
|
-
domain,
|
|
84
|
-
bizplace,
|
|
85
|
-
status: ORDER_STATUS.PENDING,
|
|
86
|
-
creator: user,
|
|
87
|
-
updater: user
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (newReturnOrder.orderInventories[0].returnQty < 0) {
|
|
91
|
-
throw new Error('invalid return quantity')
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
let createdReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).save(newReturnOrder as any)
|
|
95
|
-
|
|
96
|
-
for (let moi of mergedOrderInventories) {
|
|
97
|
-
let newOrderInv: OrderInventory = Object.assign({}, moi) as any
|
|
98
|
-
newOrderInv.domain = domain
|
|
99
|
-
newOrderInv.bizplace = bizplace
|
|
100
|
-
newOrderInv.status = ORDER_INVENTORY_STATUS.PENDING
|
|
101
|
-
newOrderInv.name = OrderNoGenerator.orderInventory()
|
|
102
|
-
newOrderInv.returnOrder = createdReturnOrder
|
|
103
|
-
newOrderInv.product = await tx.getRepository(Product).findOneBy({ id: moi.product.id })
|
|
104
|
-
newOrderInv.creator = user
|
|
105
|
-
newOrderInv.updater = user
|
|
106
|
-
|
|
107
|
-
if (newOrderInv.inventory?.id) {
|
|
108
|
-
foundInv = (await tx.getRepository(Inventory).findOneBy({ id: newOrderInv.inventory.id })) as any
|
|
109
|
-
newOrderInv.inventory = foundInv as any
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
await tx.getRepository(OrderInventory).save(newOrderInv)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (file?.length > 0) {
|
|
116
|
-
const attachments: Partial<Attachment>[] = file.map(attachment => {
|
|
117
|
-
return {
|
|
118
|
-
file: attachment,
|
|
119
|
-
refType: ATTACHMENT_TYPE.RETURN_ORDER,
|
|
120
|
-
refBy: createdReturnOrder.id,
|
|
121
|
-
category: ATTACHMENT_TYPE.RETURN_ORDER /* TODO use refType */
|
|
122
|
-
}
|
|
123
|
-
})
|
|
124
|
-
await createAttachments(null, { attachments }, context)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return createdReturnOrder
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
131
|
-
@Directive('@transaction')
|
|
132
|
-
@Mutation(returns => ReturnOrder)
|
|
133
|
-
async confirmReturnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrder> {
|
|
134
|
-
const { tx } = context.state
|
|
135
|
-
|
|
136
|
-
const returnOrder: ReturnOrder = await confirmReturnOrder(tx, name, context)
|
|
137
|
-
|
|
138
|
-
return returnOrder
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
142
|
-
@Directive('@transaction')
|
|
143
|
-
@Mutation(returns => ReturnOrder)
|
|
144
|
-
async receiveReturnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrder> {
|
|
145
|
-
const { tx } = context.state
|
|
146
|
-
const returnOrder: ReturnOrder = await receiveReturnOrder(tx, name, context)
|
|
147
|
-
|
|
148
|
-
return returnOrder
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
152
|
-
@Directive('@transaction')
|
|
153
|
-
@Mutation(returns => ReturnOrder)
|
|
154
|
-
async rejectReturnOrder(
|
|
155
|
-
@Arg('name') name: string,
|
|
156
|
-
@Arg('patch', type => ReturnOrderPatch) patch: ReturnOrderPatch,
|
|
157
|
-
@Ctx() context: ResolverContext
|
|
158
|
-
): Promise<ReturnOrder> {
|
|
159
|
-
const { tx } = context.state
|
|
160
|
-
const returnOrder: ReturnOrder = await rejectReturnOrder(tx, name, patch.remark, context)
|
|
161
|
-
|
|
162
|
-
return returnOrder
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
166
|
-
@Directive('@transaction')
|
|
167
|
-
@Mutation(returns => ReturnOrder)
|
|
168
|
-
async checkReturnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrder> {
|
|
169
|
-
const { tx } = context.state
|
|
170
|
-
const returnOrder: ReturnOrder = await checkReturnOrder(tx, name, context)
|
|
171
|
-
|
|
172
|
-
return returnOrder
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
export async function deleteReturnOrder(tx: EntityManager, name: string, context: ResolverContext): Promise<boolean> {
|
|
177
|
-
const { domain } = context.state
|
|
178
|
-
|
|
179
|
-
let foundReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).findOne({
|
|
180
|
-
where: { domain: { id: domain.id }, name },
|
|
181
|
-
relations: ['orderInventories', 'orderInventories.inventory', 'orderVass', 'creator', 'updater']
|
|
182
|
-
})
|
|
183
|
-
|
|
184
|
-
if (!foundReturnOrder) throw new Error(`Return Order doesn't exists.`)
|
|
185
|
-
const foundOIs: OrderInventory[] = foundReturnOrder.orderInventories
|
|
186
|
-
const foundOVs: OrderVas[] = foundReturnOrder.orderVass
|
|
187
|
-
|
|
188
|
-
let foundAttachment: Attachment
|
|
189
|
-
if (foundReturnOrder?.ownTransport) {
|
|
190
|
-
foundAttachment = await tx.getRepository(Attachment).findOne({
|
|
191
|
-
where: {
|
|
192
|
-
domain: { id: domain.id },
|
|
193
|
-
refBy: foundReturnOrder.id,
|
|
194
|
-
category: ATTACHMENT_TYPE.RETURN_ORDER
|
|
195
|
-
}
|
|
196
|
-
})
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// Update locked qty and locked weight of inventories and return id list of order inventories
|
|
200
|
-
const inventoryIds: string[] = foundOIs.map((oi: OrderInventory) => oi.id)
|
|
201
|
-
|
|
202
|
-
// Delete order inventories by ids
|
|
203
|
-
if (inventoryIds.length) {
|
|
204
|
-
await tx.getRepository(OrderInventory).delete({ id: In(inventoryIds) })
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// 2. delete order vass
|
|
208
|
-
const vasIds = foundOVs.map((vas: OrderVas) => vas.id)
|
|
209
|
-
if (vasIds.length) {
|
|
210
|
-
await tx.getRepository(OrderVas).delete({ id: In(vasIds) })
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (foundAttachment) {
|
|
214
|
-
await tx.getRepository(Attachment).delete({ domain: { id: domain.id }, id: foundAttachment.id })
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
await tx.getRepository(ReturnOrder).delete({ domain: { id: domain.id }, name })
|
|
218
|
-
return true
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
export async function confirmReturnOrder(
|
|
222
|
-
tx: EntityManager,
|
|
223
|
-
name: string,
|
|
224
|
-
context: ResolverContext
|
|
225
|
-
): Promise<ReturnOrder> {
|
|
226
|
-
const { domain, user } = context.state
|
|
227
|
-
|
|
228
|
-
const foundReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).findOne({
|
|
229
|
-
where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING },
|
|
230
|
-
relations: ['bizplace', 'orderInventories', 'orderVass']
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
if (!foundReturnOrder) throw new Error(`Return order doesn't exists.`)
|
|
234
|
-
let foundOIs: OrderInventory[] = foundReturnOrder.orderInventories
|
|
235
|
-
let foundOVs: OrderVas[] = foundReturnOrder.orderVass
|
|
236
|
-
let customerBizplace: Bizplace = foundReturnOrder.bizplace
|
|
237
|
-
|
|
238
|
-
// 1. RO Status change (PENDING => PENDING_RECEIVE)
|
|
239
|
-
const returnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).save({
|
|
240
|
-
...foundReturnOrder,
|
|
241
|
-
status: ORDER_STATUS.PENDING_RECEIVE,
|
|
242
|
-
updater: user
|
|
243
|
-
})
|
|
244
|
-
|
|
245
|
-
// 1. Update status of order inventories
|
|
246
|
-
foundOIs = foundOIs.map((orderInventory: OrderInventory) => {
|
|
247
|
-
return {
|
|
248
|
-
...orderInventory,
|
|
249
|
-
status: ORDER_INVENTORY_STATUS.PENDING_RECEIVE,
|
|
250
|
-
updater: user
|
|
251
|
-
}
|
|
252
|
-
})
|
|
253
|
-
await tx.getRepository(OrderInventory).save(foundOIs)
|
|
254
|
-
|
|
255
|
-
// 2. Update status of order vass
|
|
256
|
-
if (foundOVs && foundOVs.length) {
|
|
257
|
-
foundOVs = foundOVs.map((orderVas: OrderVas) => {
|
|
258
|
-
return {
|
|
259
|
-
...orderVas,
|
|
260
|
-
status: ORDER_VAS_STATUS.PENDING_RECEIVE,
|
|
261
|
-
updater: user
|
|
262
|
-
}
|
|
263
|
-
})
|
|
264
|
-
await tx.getRepository(OrderVas).save(foundOVs)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// notification logics
|
|
268
|
-
// get Office Admin Users
|
|
269
|
-
const users: any[] = await tx
|
|
270
|
-
.getRepository('users_roles')
|
|
271
|
-
.createQueryBuilder('ur')
|
|
272
|
-
.select('ur.users_id', 'id')
|
|
273
|
-
.where(qb => {
|
|
274
|
-
const subQuery = qb
|
|
275
|
-
.subQuery()
|
|
276
|
-
.select('role.id')
|
|
277
|
-
.from(Role, 'role')
|
|
278
|
-
.where("role.name = 'Office Admin'")
|
|
279
|
-
.andWhere('role.domain_id = :domain', { domain: domain.id })
|
|
280
|
-
.getQuery()
|
|
281
|
-
return 'ur.roles_id IN ' + subQuery
|
|
282
|
-
})
|
|
283
|
-
.getRawMany()
|
|
284
|
-
|
|
285
|
-
// send notification to Office Admin Users
|
|
286
|
-
if (users?.length && context.header?.referer) {
|
|
287
|
-
const receivers: any[] = users.map(user => user.id)
|
|
288
|
-
const msg = {
|
|
289
|
-
title: `New Return Order from ${customerBizplace.name}`,
|
|
290
|
-
body: `New incoming order, ${foundReturnOrder.name} is pending for receiving`,
|
|
291
|
-
url: context.header.referer,
|
|
292
|
-
data: { url: context.header.referer }
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
296
|
-
*/
|
|
297
|
-
|
|
298
|
-
// await sendNotification({
|
|
299
|
-
// receivers,
|
|
300
|
-
// message: { ...msg }
|
|
301
|
-
// })
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
return returnOrder
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
export async function receiveReturnOrder(
|
|
308
|
-
tx: EntityManager,
|
|
309
|
-
name: string,
|
|
310
|
-
context: ResolverContext
|
|
311
|
-
): Promise<ReturnOrder> {
|
|
312
|
-
const { domain, user } = context.state
|
|
313
|
-
|
|
314
|
-
const foundReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).findOne({
|
|
315
|
-
where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },
|
|
316
|
-
relations: ['bizplace', 'orderInventories', 'orderVass']
|
|
317
|
-
})
|
|
318
|
-
|
|
319
|
-
if (!foundReturnOrder) throw new Error(`Return order doesn't exists.`)
|
|
320
|
-
let foundOIs: OrderInventory[] = foundReturnOrder.orderInventories
|
|
321
|
-
let foundOVs: OrderVas[] = foundReturnOrder.orderVass
|
|
322
|
-
|
|
323
|
-
// 1. RO Status change (PENDING_RECEIVE => INTRANSIT)
|
|
324
|
-
const returnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).save({
|
|
325
|
-
...foundReturnOrder,
|
|
326
|
-
status: ORDER_STATUS.INTRANSIT,
|
|
327
|
-
updater: user,
|
|
328
|
-
acceptedBy: user,
|
|
329
|
-
acceptedAt: new Date()
|
|
330
|
-
})
|
|
331
|
-
|
|
332
|
-
// 1. Update status of order inventories
|
|
333
|
-
foundOIs = foundOIs.map((orderInventory: OrderInventory) => {
|
|
334
|
-
return {
|
|
335
|
-
...orderInventory,
|
|
336
|
-
status: ORDER_INVENTORY_STATUS.INTRANSIT,
|
|
337
|
-
updater: user
|
|
338
|
-
}
|
|
339
|
-
})
|
|
340
|
-
await tx.getRepository(OrderInventory).save(foundOIs)
|
|
341
|
-
|
|
342
|
-
// 2. Update status of order vass
|
|
343
|
-
if (foundOVs && foundOVs.length) {
|
|
344
|
-
foundOVs = foundOVs.map((orderVas: OrderVas) => {
|
|
345
|
-
return {
|
|
346
|
-
...orderVas,
|
|
347
|
-
status: ORDER_VAS_STATUS.INTRANSIT,
|
|
348
|
-
updater: user
|
|
349
|
-
}
|
|
350
|
-
})
|
|
351
|
-
await tx.getRepository(OrderVas).save(foundOVs)
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
// notification logics
|
|
355
|
-
const users: any[] = await getDomainUsers(foundReturnOrder?.bizplace, tx)
|
|
356
|
-
|
|
357
|
-
if (users?.length && context.header?.referer) {
|
|
358
|
-
const receivers: any[] = users.map(user => user.id)
|
|
359
|
-
const msg = {
|
|
360
|
-
title: `Latest status for ${foundReturnOrder.name}`,
|
|
361
|
-
body: `Your Return Order has been received and processed by ${domain.name}`,
|
|
362
|
-
url: context.header.referer,
|
|
363
|
-
data: { url: context.header.referer }
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
368
|
-
*/
|
|
369
|
-
|
|
370
|
-
// await sendNotification({
|
|
371
|
-
// receivers,
|
|
372
|
-
// message: { ...msg }
|
|
373
|
-
// })
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
return returnOrder
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
export async function rejectReturnOrder(
|
|
380
|
-
tx: EntityManager,
|
|
381
|
-
name: string,
|
|
382
|
-
remark: string,
|
|
383
|
-
context: any
|
|
384
|
-
): Promise<ReturnOrder> {
|
|
385
|
-
const { domain, user } = context.state
|
|
386
|
-
|
|
387
|
-
const foundReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).findOne({
|
|
388
|
-
where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },
|
|
389
|
-
relations: ['bizplace', 'orderInventories', 'orderVass']
|
|
390
|
-
})
|
|
391
|
-
|
|
392
|
-
if (!foundReturnOrder) throw new Error(`Return order doesn't exists.`)
|
|
393
|
-
if (!remark) throw new Error('Remark is not exist.')
|
|
394
|
-
|
|
395
|
-
let foundOIs: OrderInventory[] = foundReturnOrder.orderInventories
|
|
396
|
-
let foundOVs: OrderVas[] = foundReturnOrder.orderVass
|
|
397
|
-
|
|
398
|
-
foundReturnOrder.remark = remark
|
|
399
|
-
foundReturnOrder.status = ORDER_STATUS.REJECTED
|
|
400
|
-
foundReturnOrder.updater = user
|
|
401
|
-
await tx.getRepository(ReturnOrder).save(foundReturnOrder)
|
|
402
|
-
|
|
403
|
-
// 1. Update status of order inventories
|
|
404
|
-
foundOIs = foundOIs.map((orderInventory: OrderInventory) => {
|
|
405
|
-
return {
|
|
406
|
-
...orderInventory,
|
|
407
|
-
status: ORDER_INVENTORY_STATUS.REJECTED,
|
|
408
|
-
updater: user
|
|
409
|
-
}
|
|
410
|
-
})
|
|
411
|
-
await tx.getRepository(OrderInventory).save(foundOIs)
|
|
412
|
-
|
|
413
|
-
// 2. Update status of order vass
|
|
414
|
-
if (foundOVs && foundOVs.length) {
|
|
415
|
-
foundOVs = foundOVs.map((orderVas: OrderVas) => {
|
|
416
|
-
return {
|
|
417
|
-
...orderVas,
|
|
418
|
-
status: ORDER_VAS_STATUS.REJECTED,
|
|
419
|
-
updater: user
|
|
420
|
-
}
|
|
421
|
-
})
|
|
422
|
-
await tx.getRepository(OrderVas).save(foundOVs)
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
// notification logics
|
|
426
|
-
const users: any[] = await getDomainUsers(foundReturnOrder?.bizplace, tx)
|
|
427
|
-
|
|
428
|
-
if (users?.length && context.header?.referer) {
|
|
429
|
-
const receivers: any[] = users.map(user => user.id)
|
|
430
|
-
const msg = {
|
|
431
|
-
title: `Latest status for ${foundReturnOrder.name}`,
|
|
432
|
-
body: `Your Return Order has been rejected.`,
|
|
433
|
-
url: context.header.referer,
|
|
434
|
-
data: { url: context.header.referer }
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
439
|
-
*/
|
|
440
|
-
|
|
441
|
-
// await sendNotification({
|
|
442
|
-
// receivers,
|
|
443
|
-
// message: { ...msg }
|
|
444
|
-
// })
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
return foundReturnOrder
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
export async function checkReturnOrder(
|
|
451
|
-
tx: EntityManager,
|
|
452
|
-
name: string,
|
|
453
|
-
context: ResolverContext
|
|
454
|
-
): Promise<ReturnOrder> {
|
|
455
|
-
const { domain, user } = context.state
|
|
456
|
-
|
|
457
|
-
const foundReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).findOne({
|
|
458
|
-
where: { domain: { id: domain.id }, name, status: ORDER_STATUS.INTRANSIT },
|
|
459
|
-
relations: ['bizplace', 'orderInventories', 'orderVass']
|
|
460
|
-
})
|
|
461
|
-
|
|
462
|
-
if (!foundReturnOrder) throw new Error(`Return order doesn't exists.`)
|
|
463
|
-
|
|
464
|
-
let foundOIs: OrderInventory[] = foundReturnOrder.orderInventories
|
|
465
|
-
let foundOVs: OrderVas[] = foundReturnOrder.orderVass
|
|
466
|
-
|
|
467
|
-
foundReturnOrder.status = ORDER_STATUS.ARRIVED
|
|
468
|
-
foundReturnOrder.updater = user
|
|
469
|
-
await tx.getRepository(ReturnOrder).save(foundReturnOrder)
|
|
470
|
-
|
|
471
|
-
// 1. Update status of order inventories
|
|
472
|
-
foundOIs = foundOIs.map((orderInventory: OrderInventory) => {
|
|
473
|
-
return {
|
|
474
|
-
...orderInventory,
|
|
475
|
-
status: ORDER_INVENTORY_STATUS.ARRIVED,
|
|
476
|
-
updater: user
|
|
477
|
-
}
|
|
478
|
-
})
|
|
479
|
-
await tx.getRepository(OrderInventory).save(foundOIs)
|
|
480
|
-
|
|
481
|
-
// 2. Update status of order vass
|
|
482
|
-
if (foundOVs && foundOVs.length) {
|
|
483
|
-
foundOVs = foundOVs.map((orderVas: OrderVas) => {
|
|
484
|
-
return {
|
|
485
|
-
...orderVas,
|
|
486
|
-
status: ORDER_VAS_STATUS.ARRIVED,
|
|
487
|
-
updater: user
|
|
488
|
-
}
|
|
489
|
-
})
|
|
490
|
-
await tx.getRepository(OrderVas).save(foundOVs)
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
// notification logics
|
|
494
|
-
const users: any[] = await getDomainUsers(foundReturnOrder?.bizplace, tx)
|
|
495
|
-
|
|
496
|
-
if (users?.length && context.header?.referer) {
|
|
497
|
-
const receivers: any[] = users.map(user => user.id)
|
|
498
|
-
const msg = {
|
|
499
|
-
title: `Latest status for ${foundReturnOrder.name}`,
|
|
500
|
-
body: `Your goods has safely arrived at ${domain.name}.`,
|
|
501
|
-
url: context.header.referer,
|
|
502
|
-
data: { url: context.header.referer }
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/**
|
|
506
|
-
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
507
|
-
*/
|
|
508
|
-
|
|
509
|
-
// await sendNotification({
|
|
510
|
-
// receivers,
|
|
511
|
-
// message: { ...msg }
|
|
512
|
-
// })
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
return foundReturnOrder
|
|
516
|
-
}
|