@things-factory/sales-base 8.0.0-beta.0 → 8.0.0-beta.2

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.
Files changed (177) hide show
  1. package/package.json +13 -13
  2. package/server/constants/attachment-type.ts +0 -9
  3. package/server/constants/index.ts +0 -7
  4. package/server/constants/load-type.ts +0 -4
  5. package/server/constants/order.ts +0 -203
  6. package/server/constants/product-group-type.ts +0 -4
  7. package/server/constants/release-good.ts +0 -9
  8. package/server/constants/transfer-order-type.ts +0 -6
  9. package/server/constants/validation-error-code.ts +0 -3
  10. package/server/constants/vas-target-type.ts +0 -25
  11. package/server/controllers/ecommerce/ecommerce-controller.ts +0 -122
  12. package/server/controllers/ecommerce/index.ts +0 -2
  13. package/server/controllers/ecommerce/sellercraft-controller.ts +0 -182
  14. package/server/controllers/index.ts +0 -2
  15. package/server/controllers/order-controller.ts +0 -296
  16. package/server/errors/index.ts +0 -1
  17. package/server/errors/validation-error.ts +0 -25
  18. package/server/index.ts +0 -5
  19. package/server/migrations/index.ts +0 -9
  20. package/server/service/arrival-notice/arrival-notice-mutation.ts +0 -1152
  21. package/server/service/arrival-notice/arrival-notice-query.ts +0 -549
  22. package/server/service/arrival-notice/arrival-notice-types.ts +0 -310
  23. package/server/service/arrival-notice/arrival-notice.ts +0 -202
  24. package/server/service/arrival-notice/index.ts +0 -9
  25. package/server/service/claim/claim-mutation.ts +0 -308
  26. package/server/service/claim/claim-query.ts +0 -122
  27. package/server/service/claim/claim-types.ts +0 -130
  28. package/server/service/claim/claim.ts +0 -140
  29. package/server/service/claim/index.ts +0 -9
  30. package/server/service/claim-detail/claim-detail-mutation.ts +0 -102
  31. package/server/service/claim-detail/claim-detail-query.ts +0 -55
  32. package/server/service/claim-detail/claim-detail-types.ts +0 -47
  33. package/server/service/claim-detail/claim-detail.ts +0 -69
  34. package/server/service/claim-detail/index.ts +0 -9
  35. package/server/service/claim-order/claim-order-mutation.ts +0 -101
  36. package/server/service/claim-order/claim-order-query.ts +0 -47
  37. package/server/service/claim-order/claim-order-types.ts +0 -35
  38. package/server/service/claim-order/claim-order.ts +0 -81
  39. package/server/service/claim-order/index.ts +0 -9
  40. package/server/service/collection-order/collection-order-mutation.ts +0 -245
  41. package/server/service/collection-order/collection-order-query.ts +0 -97
  42. package/server/service/collection-order/collection-order-types.ts +0 -165
  43. package/server/service/collection-order/collection-order.ts +0 -135
  44. package/server/service/collection-order/index.ts +0 -9
  45. package/server/service/delivery-order/delivery-order-mutation.ts +0 -967
  46. package/server/service/delivery-order/delivery-order-query.ts +0 -631
  47. package/server/service/delivery-order/delivery-order-types.ts +0 -268
  48. package/server/service/delivery-order/delivery-order.ts +0 -258
  49. package/server/service/delivery-order/index.ts +0 -9
  50. package/server/service/draft-release-good/draft-release-good-mutation.ts +0 -765
  51. package/server/service/draft-release-good/draft-release-good-query.ts +0 -354
  52. package/server/service/draft-release-good/draft-release-good-type.ts +0 -261
  53. package/server/service/draft-release-good/draft-release-good.ts +0 -284
  54. package/server/service/draft-release-good/index.ts +0 -9
  55. package/server/service/goods-receival-note/goods-receival-note-mutation.ts +0 -129
  56. package/server/service/goods-receival-note/goods-receival-note-query.ts +0 -280
  57. package/server/service/goods-receival-note/goods-receival-note-types.ts +0 -105
  58. package/server/service/goods-receival-note/goods-receival-note.ts +0 -127
  59. package/server/service/goods-receival-note/index.ts +0 -9
  60. package/server/service/index.ts +0 -238
  61. package/server/service/inventory-check/index.ts +0 -9
  62. package/server/service/inventory-check/inventory-check-mutation.ts +0 -149
  63. package/server/service/inventory-check/inventory-check-query.ts +0 -48
  64. package/server/service/inventory-check/inventory-check-types.ts +0 -48
  65. package/server/service/inventory-check/inventory-check.ts +0 -90
  66. package/server/service/invoice/index.ts +0 -9
  67. package/server/service/invoice/invoice-mutation.ts +0 -95
  68. package/server/service/invoice/invoice-query.ts +0 -53
  69. package/server/service/invoice/invoice-types.ts +0 -279
  70. package/server/service/invoice/invoice.ts +0 -230
  71. package/server/service/invoice-product/index.ts +0 -9
  72. package/server/service/invoice-product/invoice-product-mutation.ts +0 -54
  73. package/server/service/invoice-product/invoice-product-query.ts +0 -54
  74. package/server/service/invoice-product/invoice-product-types.ts +0 -84
  75. package/server/service/invoice-product/invoice-product.ts +0 -92
  76. package/server/service/job-sheet/index.ts +0 -9
  77. package/server/service/job-sheet/job-sheet-mutation.ts +0 -92
  78. package/server/service/job-sheet/job-sheet-query.ts +0 -112
  79. package/server/service/job-sheet/job-sheet-types.ts +0 -78
  80. package/server/service/job-sheet/job-sheet.ts +0 -102
  81. package/server/service/manifest/index.ts +0 -6
  82. package/server/service/manifest/manifest-mutation.ts +0 -190
  83. package/server/service/manifest/manifest-query.ts +0 -149
  84. package/server/service/manifest/manifest-type.ts +0 -84
  85. package/server/service/manifest/manifest.ts +0 -114
  86. package/server/service/order-inventory/index.ts +0 -9
  87. package/server/service/order-inventory/order-inventory-mutation.ts +0 -54
  88. package/server/service/order-inventory/order-inventory-query.ts +0 -722
  89. package/server/service/order-inventory/order-inventory-types.ts +0 -238
  90. package/server/service/order-inventory/order-inventory.ts +0 -401
  91. package/server/service/order-product/index.ts +0 -9
  92. package/server/service/order-product/order-product-mutation.ts +0 -48
  93. package/server/service/order-product/order-product-query.ts +0 -89
  94. package/server/service/order-product/order-product-types.ts +0 -335
  95. package/server/service/order-product/order-product.ts +0 -362
  96. package/server/service/order-tote/index.ts +0 -9
  97. package/server/service/order-tote/order-tote-mutation.ts +0 -31
  98. package/server/service/order-tote/order-tote-query.ts +0 -112
  99. package/server/service/order-tote/order-tote-types.ts +0 -47
  100. package/server/service/order-tote/order-tote.ts +0 -73
  101. package/server/service/order-tote-item/index.ts +0 -9
  102. package/server/service/order-tote-item/order-tote-item-mutation.ts +0 -31
  103. package/server/service/order-tote-item/order-tote-item-query.ts +0 -82
  104. package/server/service/order-tote-item/order-tote-item-types.ts +0 -56
  105. package/server/service/order-tote-item/order-tote-item.ts +0 -72
  106. package/server/service/order-tote-seal/index.ts +0 -9
  107. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +0 -31
  108. package/server/service/order-tote-seal/order-tote-seal-query.ts +0 -59
  109. package/server/service/order-tote-seal/order-tote-seal-types.ts +0 -41
  110. package/server/service/order-tote-seal/order-tote-seal.ts +0 -46
  111. package/server/service/order-vas/index.ts +0 -9
  112. package/server/service/order-vas/order-vas-mutation.ts +0 -20
  113. package/server/service/order-vas/order-vas-query.ts +0 -72
  114. package/server/service/order-vas/order-vas-types.ts +0 -159
  115. package/server/service/order-vas/order-vas.ts +0 -207
  116. package/server/service/others/index.ts +0 -5
  117. package/server/service/others/other-query.ts +0 -563
  118. package/server/service/others/other-types.ts +0 -115
  119. package/server/service/purchase-order/index.ts +0 -9
  120. package/server/service/purchase-order/purchase-order-mutation.ts +0 -458
  121. package/server/service/purchase-order/purchase-order-query.ts +0 -90
  122. package/server/service/purchase-order/purchase-order-types.ts +0 -154
  123. package/server/service/purchase-order/purchase-order.ts +0 -172
  124. package/server/service/purchase-order-other-charge/index.ts +0 -9
  125. package/server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.ts +0 -31
  126. package/server/service/purchase-order-other-charge/purchase-order-other-charge-query.ts +0 -52
  127. package/server/service/purchase-order-other-charge/purchase-order-other-charge-types.ts +0 -44
  128. package/server/service/purchase-order-other-charge/purchase-order-other-charge.ts +0 -68
  129. package/server/service/release-good/index.ts +0 -9
  130. package/server/service/release-good/release-good-mutation.ts +0 -1686
  131. package/server/service/release-good/release-good-query.ts +0 -980
  132. package/server/service/release-good/release-good-types.ts +0 -662
  133. package/server/service/release-good/release-good.ts +0 -490
  134. package/server/service/retail-replenishment-order/index.ts +0 -9
  135. package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +0 -382
  136. package/server/service/retail-replenishment-order/retail-replenishment-order-query.ts +0 -54
  137. package/server/service/retail-replenishment-order/retail-replenishment-order-types.ts +0 -101
  138. package/server/service/retail-replenishment-order/retail-replenishment-order.ts +0 -115
  139. package/server/service/return-order/index.ts +0 -9
  140. package/server/service/return-order/return-order-mutation.ts +0 -516
  141. package/server/service/return-order/return-order-query.ts +0 -226
  142. package/server/service/return-order/return-order-types.ts +0 -196
  143. package/server/service/return-order/return-order.ts +0 -127
  144. package/server/service/reverse-kitting-order/index.ts +0 -9
  145. package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +0 -500
  146. package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +0 -197
  147. package/server/service/reverse-kitting-order/reverse-kitting-order-type.ts +0 -173
  148. package/server/service/reverse-kitting-order/reverse-kitting-order.ts +0 -121
  149. package/server/service/reverse-kitting-order-inventory/index.ts +0 -9
  150. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +0 -129
  151. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +0 -52
  152. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.ts +0 -95
  153. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.ts +0 -143
  154. package/server/service/shipping-order/index.ts +0 -9
  155. package/server/service/shipping-order/shipping-order-mutation.ts +0 -61
  156. package/server/service/shipping-order/shipping-order-query.ts +0 -61
  157. package/server/service/shipping-order/shipping-order-types.ts +0 -89
  158. package/server/service/shipping-order/shipping-order.ts +0 -129
  159. package/server/service/transfer-order/index.ts +0 -9
  160. package/server/service/transfer-order/transfer-order-mutation.ts +0 -309
  161. package/server/service/transfer-order/transfer-order-query.ts +0 -66
  162. package/server/service/transfer-order/transfer-order-types.ts +0 -97
  163. package/server/service/transfer-order/transfer-order.ts +0 -117
  164. package/server/service/vas/index.ts +0 -9
  165. package/server/service/vas/vas-mutation.ts +0 -106
  166. package/server/service/vas/vas-query.ts +0 -60
  167. package/server/service/vas/vas-types.ts +0 -71
  168. package/server/service/vas/vas.ts +0 -77
  169. package/server/service/vas-order/index.ts +0 -9
  170. package/server/service/vas-order/vas-order-mutation.ts +0 -259
  171. package/server/service/vas-order/vas-order-query.ts +0 -119
  172. package/server/service/vas-order/vas-order-types.ts +0 -49
  173. package/server/service/vas-order/vas-order.ts +0 -81
  174. package/server/utils/datetime-util.ts +0 -54
  175. package/server/utils/index.ts +0 -3
  176. package/server/utils/inventory-util.ts +0 -1155
  177. 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
- }