@things-factory/sales-base 4.3.2 → 4.4.0-alpha.0

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 (173) hide show
  1. package/dist-server/constants/attachment-type.js +1 -2
  2. package/dist-server/constants/attachment-type.js.map +1 -1
  3. package/dist-server/constants/index.js +5 -2
  4. package/dist-server/constants/index.js.map +1 -1
  5. package/dist-server/constants/order.js +3 -12
  6. package/dist-server/constants/order.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/index.js +5 -1
  8. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  9. package/dist-server/controllers/index.js +5 -1
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/errors/index.js +5 -1
  12. package/dist-server/errors/index.js.map +1 -1
  13. package/dist-server/errors/validation-error.js +5 -1
  14. package/dist-server/errors/validation-error.js.map +1 -1
  15. package/dist-server/index.js +5 -1
  16. package/dist-server/index.js.map +1 -1
  17. package/dist-server/service/arrival-notice/index.js +5 -1
  18. package/dist-server/service/arrival-notice/index.js.map +1 -1
  19. package/dist-server/service/claim/index.js +5 -1
  20. package/dist-server/service/claim/index.js.map +1 -1
  21. package/dist-server/service/claim-detail/index.js +5 -1
  22. package/dist-server/service/claim-detail/index.js.map +1 -1
  23. package/dist-server/service/claim-order/index.js +5 -1
  24. package/dist-server/service/claim-order/index.js.map +1 -1
  25. package/dist-server/service/collection-order/index.js +5 -1
  26. package/dist-server/service/collection-order/index.js.map +1 -1
  27. package/dist-server/service/delivery-order/index.js +5 -1
  28. package/dist-server/service/delivery-order/index.js.map +1 -1
  29. package/dist-server/service/goods-receival-note/index.js +5 -1
  30. package/dist-server/service/goods-receival-note/index.js.map +1 -1
  31. package/dist-server/service/index.js +24 -48
  32. package/dist-server/service/index.js.map +1 -1
  33. package/dist-server/service/inventory-check/index.js +5 -1
  34. package/dist-server/service/inventory-check/index.js.map +1 -1
  35. package/dist-server/service/invoice/index.js +5 -1
  36. package/dist-server/service/invoice/index.js.map +1 -1
  37. package/dist-server/service/invoice-product/index.js +5 -1
  38. package/dist-server/service/invoice-product/index.js.map +1 -1
  39. package/dist-server/service/job-sheet/index.js +5 -1
  40. package/dist-server/service/job-sheet/index.js.map +1 -1
  41. package/dist-server/service/order-inventory/index.js +5 -1
  42. package/dist-server/service/order-inventory/index.js.map +1 -1
  43. package/dist-server/service/order-inventory/order-inventory-query.js +1 -38
  44. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  45. package/dist-server/service/order-inventory/order-inventory-types.js +1 -9
  46. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  47. package/dist-server/service/order-inventory/order-inventory.js +1 -5
  48. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  49. package/dist-server/service/order-product/index.js +5 -1
  50. package/dist-server/service/order-product/index.js.map +1 -1
  51. package/dist-server/service/order-product/order-product-types.js +13 -13
  52. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  53. package/dist-server/service/order-product/order-product.js +4 -39
  54. package/dist-server/service/order-product/order-product.js.map +1 -1
  55. package/dist-server/service/order-vas/index.js +5 -1
  56. package/dist-server/service/order-vas/index.js.map +1 -1
  57. package/dist-server/service/others/index.js +5 -1
  58. package/dist-server/service/others/index.js.map +1 -1
  59. package/dist-server/service/others/other-query.js +2 -37
  60. package/dist-server/service/others/other-query.js.map +1 -1
  61. package/dist-server/service/purchase-order/index.js +5 -1
  62. package/dist-server/service/purchase-order/index.js.map +1 -1
  63. package/dist-server/service/purchase-order-other-charge/index.js +5 -1
  64. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
  65. package/dist-server/service/release-good/index.js +5 -1
  66. package/dist-server/service/release-good/index.js.map +1 -1
  67. package/dist-server/service/release-good/release-good-mutation.js +1 -23
  68. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  69. package/dist-server/service/release-good/release-good-query.js +2 -28
  70. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  71. package/dist-server/service/release-good/release-good.js +12 -32
  72. package/dist-server/service/release-good/release-good.js.map +1 -1
  73. package/dist-server/service/retail-replenishment-order/index.js +5 -1
  74. package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
  75. package/dist-server/service/return-order/index.js +5 -1
  76. package/dist-server/service/return-order/index.js.map +1 -1
  77. package/dist-server/service/reverse-kitting-order/index.js +5 -1
  78. package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
  79. package/dist-server/service/reverse-kitting-order-inventory/index.js +5 -1
  80. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
  81. package/dist-server/service/shipping-order/index.js +5 -1
  82. package/dist-server/service/shipping-order/index.js.map +1 -1
  83. package/dist-server/service/transfer-order/index.js +5 -1
  84. package/dist-server/service/transfer-order/index.js.map +1 -1
  85. package/dist-server/service/vas/index.js +5 -1
  86. package/dist-server/service/vas/index.js.map +1 -1
  87. package/dist-server/service/vas-order/index.js +5 -1
  88. package/dist-server/service/vas-order/index.js.map +1 -1
  89. package/dist-server/utils/index.js +5 -1
  90. package/dist-server/utils/index.js.map +1 -1
  91. package/dist-server/utils/inventory-util.js +99 -258
  92. package/dist-server/utils/inventory-util.js.map +1 -1
  93. package/dist-server/utils/order-no-generator.js +0 -7
  94. package/dist-server/utils/order-no-generator.js.map +1 -1
  95. package/package.json +13 -13
  96. package/server/constants/attachment-type.ts +1 -2
  97. package/server/constants/index.ts +0 -1
  98. package/server/constants/order.ts +2 -12
  99. package/server/service/index.ts +21 -51
  100. package/server/service/order-inventory/order-inventory-query.ts +2 -40
  101. package/server/service/order-inventory/order-inventory-types.ts +0 -6
  102. package/server/service/order-inventory/order-inventory.ts +5 -5
  103. package/server/service/order-product/order-product-types.ts +3 -5
  104. package/server/service/order-product/order-product.ts +3 -30
  105. package/server/service/others/other-query.ts +8 -43
  106. package/server/service/release-good/release-good-mutation.ts +2 -24
  107. package/server/service/release-good/release-good-query.ts +30 -57
  108. package/server/service/release-good/release-good.ts +9 -28
  109. package/server/utils/inventory-util.ts +106 -287
  110. package/server/utils/order-no-generator.ts +48 -42
  111. package/dist-server/constants/release-good.js +0 -9
  112. package/dist-server/constants/release-good.js.map +0 -1
  113. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +0 -501
  114. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +0 -1
  115. package/dist-server/service/draft-release-good/draft-release-good-query.js +0 -289
  116. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +0 -1
  117. package/dist-server/service/draft-release-good/draft-release-good-type.js +0 -364
  118. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +0 -1
  119. package/dist-server/service/draft-release-good/draft-release-good.js +0 -321
  120. package/dist-server/service/draft-release-good/draft-release-good.js.map +0 -1
  121. package/dist-server/service/draft-release-good/index.js +0 -21
  122. package/dist-server/service/draft-release-good/index.js.map +0 -1
  123. package/dist-server/service/order-tote/index.js +0 -21
  124. package/dist-server/service/order-tote/index.js.map +0 -1
  125. package/dist-server/service/order-tote/order-tote-mutation.js +0 -56
  126. package/dist-server/service/order-tote/order-tote-mutation.js.map +0 -1
  127. package/dist-server/service/order-tote/order-tote-query.js +0 -123
  128. package/dist-server/service/order-tote/order-tote-query.js.map +0 -1
  129. package/dist-server/service/order-tote/order-tote-types.js +0 -79
  130. package/dist-server/service/order-tote/order-tote-types.js.map +0 -1
  131. package/dist-server/service/order-tote/order-tote.js +0 -91
  132. package/dist-server/service/order-tote/order-tote.js.map +0 -1
  133. package/dist-server/service/order-tote-item/index.js +0 -21
  134. package/dist-server/service/order-tote-item/index.js.map +0 -1
  135. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +0 -56
  136. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +0 -1
  137. package/dist-server/service/order-tote-item/order-tote-item-query.js +0 -100
  138. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +0 -1
  139. package/dist-server/service/order-tote-item/order-tote-item-types.js +0 -91
  140. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +0 -1
  141. package/dist-server/service/order-tote-item/order-tote-item.js +0 -104
  142. package/dist-server/service/order-tote-item/order-tote-item.js.map +0 -1
  143. package/dist-server/service/order-tote-seal/index.js +0 -21
  144. package/dist-server/service/order-tote-seal/index.js.map +0 -1
  145. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +0 -56
  146. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +0 -1
  147. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +0 -97
  148. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +0 -1
  149. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +0 -71
  150. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +0 -1
  151. package/dist-server/service/order-tote-seal/order-tote-seal.js +0 -71
  152. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +0 -1
  153. package/server/constants/release-good.ts +0 -6
  154. package/server/service/draft-release-good/draft-release-good-mutation.ts +0 -671
  155. package/server/service/draft-release-good/draft-release-good-query.ts +0 -314
  156. package/server/service/draft-release-good/draft-release-good-type.ts +0 -261
  157. package/server/service/draft-release-good/draft-release-good.ts +0 -270
  158. package/server/service/draft-release-good/index.ts +0 -9
  159. package/server/service/order-tote/index.ts +0 -9
  160. package/server/service/order-tote/order-tote-mutation.ts +0 -30
  161. package/server/service/order-tote/order-tote-query.ts +0 -114
  162. package/server/service/order-tote/order-tote-types.ts +0 -47
  163. package/server/service/order-tote/order-tote.ts +0 -62
  164. package/server/service/order-tote-item/index.ts +0 -9
  165. package/server/service/order-tote-item/order-tote-item-mutation.ts +0 -30
  166. package/server/service/order-tote-item/order-tote-item-query.ts +0 -88
  167. package/server/service/order-tote-item/order-tote-item-types.ts +0 -56
  168. package/server/service/order-tote-item/order-tote-item.ts +0 -72
  169. package/server/service/order-tote-seal/index.ts +0 -9
  170. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +0 -30
  171. package/server/service/order-tote-seal/order-tote-seal-query.ts +0 -60
  172. package/server/service/order-tote-seal/order-tote-seal-types.ts +0 -41
  173. package/server/service/order-tote-seal/order-tote-seal.ts +0 -46
@@ -1,270 +0,0 @@
1
- import { Field, ID, Float, ObjectType, registerEnumType } from 'type-graphql'
2
- import {
3
- Column,
4
- CreateDateColumn,
5
- Entity,
6
- Index,
7
- JoinColumn,
8
- ManyToOne,
9
- OneToMany,
10
- OneToOne,
11
- PrimaryGeneratedColumn,
12
- RelationId,
13
- UpdateDateColumn
14
- } from 'typeorm'
15
-
16
- import { Attachment } from '@things-factory/attachment-base'
17
- import { User } from '@things-factory/auth-base'
18
- import { Bizplace, ContactPoint } from '@things-factory/biz-base'
19
- import { config } from '@things-factory/env'
20
- import { Domain } from '@things-factory/shell'
21
-
22
- import { OrderProduct, ReleaseGood, ShippingOrder, ShippingOrderInfo } from '../'
23
- import { ReleaseOrderType } from '../../constants'
24
-
25
- const ORMCONFIG = config.get('ormconfig', {})
26
- const DATABASE_TYPE = ORMCONFIG.type
27
-
28
- // export enum DraftReleaseGoodStatus {
29
- // STATUS_A = 'STATUS_A',
30
- // STATUS_B = 'STATUS_B'
31
- // }
32
-
33
- // registerEnumType(DraftReleaseGoodStatus, {
34
- // name: 'DraftReleaseGoodStatus',
35
- // description: 'state enumeration of a draftReleaseGood'
36
- // })
37
-
38
- @Entity()
39
- @Index(
40
- 'ix_draft_release_good_0',
41
- (draftReleaseGood: DraftReleaseGood) => [draftReleaseGood.domain, draftReleaseGood.name],
42
- { unique: true }
43
- )
44
- @ObjectType({ description: 'Entity for DraftReleaseGood' })
45
- export class DraftReleaseGood {
46
- @PrimaryGeneratedColumn('uuid')
47
- @Field(type => ID)
48
- readonly id: string
49
-
50
- @ManyToOne(type => Domain)
51
- @Field(type => Domain, { nullable: true })
52
- domain: Domain
53
-
54
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.domain)
55
- domainId: string
56
-
57
- @ManyToOne(type => Bizplace)
58
- @Field(type => Bizplace, { nullable: true })
59
- bizplace: Bizplace
60
-
61
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.bizplace)
62
- bizplaceId: string
63
-
64
- @Column({ nullable: true })
65
- @Field({ nullable: true })
66
- name: string
67
-
68
- @OneToOne(type => ReleaseGood)
69
- @JoinColumn()
70
- @Field(type => ReleaseGood, { nullable: true })
71
- releaseGood: ReleaseGood
72
-
73
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.releaseGood)
74
- releaseGoodId: string
75
-
76
- @OneToOne(type => ShippingOrder)
77
- @JoinColumn()
78
- @Field(type => ShippingOrder, { nullable: true })
79
- shippingOrder: ShippingOrder
80
-
81
- @RelationId((releaseGood: ReleaseGood) => releaseGood.shippingOrder)
82
- shippingOrderId: string
83
-
84
- @Column({ nullable: true })
85
- @Field({ nullable: true })
86
- collectionOrderNo: string
87
-
88
- @Column({ nullable: true })
89
- @Field({ nullable: true })
90
- description: string
91
-
92
- @Column({ nullable: true })
93
- @Field({ nullable: true })
94
- truckNo: string
95
-
96
- @Column({
97
- type:
98
- DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
99
- ? 'enum'
100
- : DATABASE_TYPE == 'oracle'
101
- ? 'varchar2'
102
- : 'smallint',
103
- enum: ReleaseOrderType,
104
- default: ReleaseOrderType.B2B
105
- })
106
- @Field()
107
- type: ReleaseOrderType
108
-
109
- @Column({ default: false })
110
- @Field()
111
- exportOption: Boolean
112
-
113
- @Column({ default: false })
114
- @Field()
115
- courierOption: Boolean
116
-
117
- @Column({ default: false })
118
- @Field()
119
- packingOption: Boolean
120
-
121
- @Column()
122
- @Field()
123
- ownTransport: Boolean
124
-
125
- @Field(type => ShippingOrderInfo, { nullable: true })
126
- shippingOrderInfo?: ShippingOrderInfo
127
-
128
- @OneToMany(type => OrderProduct, orderProduct => orderProduct.draftReleaseGood)
129
- @Field(type => [OrderProduct], { nullable: true })
130
- orderProducts: OrderProduct[]
131
-
132
- @Column()
133
- @Field()
134
- status: string
135
-
136
- @Column({ nullable: true })
137
- @Field({ nullable: true })
138
- refNo: String
139
-
140
- @Column({ nullable: true })
141
- @Field({ nullable: true })
142
- refNo2: String
143
-
144
- @Column({ nullable: true })
145
- @Field({ nullable: true })
146
- refNo3: String
147
-
148
- @Column({ nullable: true })
149
- @Field({ nullable: true })
150
- releaseDate: string
151
-
152
- @Column({ nullable: true })
153
- @Field({ nullable: true })
154
- remark: string
155
-
156
- @Column({ nullable: true })
157
- @Field({ nullable: true })
158
- marketplaceOrderStatus: string
159
-
160
- @Column({ nullable: true })
161
- @Field({ nullable: true })
162
- billingAddress: string
163
-
164
- @Column({ nullable: true })
165
- @Field({ nullable: true })
166
- pickupAddress: string
167
-
168
- @Column({ nullable: true })
169
- @Field({ nullable: true })
170
- pickupTime: Date
171
-
172
- @Column({ nullable: true })
173
- @Field({ nullable: true })
174
- handoverType: string
175
-
176
- @Column({ nullable: true })
177
- @Field({ nullable: true })
178
- dropoffAddress: string
179
-
180
- @Column({ nullable: true })
181
- @Field({ nullable: true })
182
- deliveryAddress1: string
183
-
184
- @Column({ nullable: true })
185
- @Field({ nullable: true })
186
- deliveryAddress2: string
187
-
188
- @Column({ nullable: true })
189
- @Field({ nullable: true })
190
- deliveryAddress3: string
191
-
192
- @Column({ nullable: true })
193
- @Field({ nullable: true })
194
- deliveryAddress4: string
195
-
196
- @Column({ nullable: true })
197
- @Field({ nullable: true })
198
- deliveryAddress5: string
199
-
200
- @Column({ nullable: true })
201
- @Field({ nullable: true })
202
- attentionTo: string
203
-
204
- @Column({ nullable: true })
205
- @Field({ nullable: true })
206
- attentionCompany: string
207
-
208
- @Column({ nullable: true })
209
- @Field({ nullable: true })
210
- city: string
211
-
212
- @Column({ nullable: true })
213
- @Field({ nullable: true })
214
- state: string
215
-
216
- @Column({ nullable: true })
217
- @Field({ nullable: true })
218
- postalCode: string
219
-
220
- @Column({ nullable: true })
221
- @Field({ nullable: true })
222
- country: string
223
-
224
- @Column({ nullable: true })
225
- @Field({ nullable: true })
226
- phone1: string
227
-
228
- @Column({ nullable: true })
229
- @Field({ nullable: true })
230
- phone2: string
231
-
232
- @Column({ nullable: true })
233
- @Field({ nullable: true })
234
- email: string
235
-
236
- @ManyToOne(type => ContactPoint)
237
- @Field(type => ContactPoint, { nullable: true })
238
- deliverTo: ContactPoint
239
-
240
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.deliverTo)
241
- deliverToId: string
242
-
243
- @Field(type => [Attachment], { nullable: true })
244
- attachment?: Attachment[]
245
-
246
- @CreateDateColumn()
247
- @Field()
248
- createdAt: Date
249
-
250
- @UpdateDateColumn()
251
- @Field()
252
- updatedAt: Date
253
-
254
- @ManyToOne(type => User)
255
- @Field(type => User, { nullable: true })
256
- creator: User
257
-
258
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.creator)
259
- creatorId: string
260
-
261
- @ManyToOne(type => User)
262
- @Field(type => User, { nullable: true })
263
- updater: User
264
-
265
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.updater)
266
- updaterId: string
267
-
268
- @Field()
269
- computedStatus: string
270
- }
@@ -1,9 +0,0 @@
1
- import { DraftReleaseGood } from './draft-release-good'
2
- import { DraftReleaseGoodQuery } from './draft-release-good-query'
3
- import { DraftReleaseGoodMutation } from './draft-release-good-mutation'
4
-
5
- export const entities = [DraftReleaseGood]
6
- export const resolvers = [DraftReleaseGoodQuery, DraftReleaseGoodMutation]
7
-
8
- export * from './draft-release-good-mutation'
9
- export * from './draft-release-good-query'
@@ -1,9 +0,0 @@
1
- import { OrderTote } from './order-tote'
2
- import { OrderToteMutation } from './order-tote-mutation'
3
- import { OrderToteQuery } from './order-tote-query'
4
-
5
- export const entities = [OrderTote]
6
- export const resolvers = [OrderToteQuery, OrderToteMutation]
7
-
8
- export * from './order-tote-mutation'
9
- export * from './order-tote-query'
@@ -1,30 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
- import { EntityManager, In } from 'typeorm'
3
-
4
- import { Domain } from '@things-factory/shell'
5
-
6
- import { OrderTote } from './order-tote'
7
-
8
- @Resolver(OrderTote)
9
- export class OrderToteMutation {
10
- @Directive('@transaction')
11
- @Mutation(returns => Boolean)
12
- async deleteOrderTote(@Arg('name') id: string, @Ctx() context: any): Promise<Boolean> {
13
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
14
-
15
- await tx.getRepository(OrderTote).delete({ domain, id })
16
- return true
17
- }
18
-
19
- @Directive('@transaction')
20
- @Mutation(returns => Boolean)
21
- async deleteOrderTotes(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<Boolean> {
22
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
23
-
24
- await tx.getRepository(OrderTote).delete({
25
- domain,
26
- id: In(ids)
27
- })
28
- return true
29
- }
30
- }
@@ -1,114 +0,0 @@
1
- import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { getRepository, In, IsNull } from 'typeorm'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import { ReleaseGood } from '../release-good/release-good'
6
- import { Tote } from '@things-factory/warehouse-base'
7
- import { buildQuery, Domain, Filter, Pagination, Sorting } from '@things-factory/shell'
8
- import { Bizplace } from '@things-factory/biz-base'
9
-
10
- import { OrderTote } from './order-tote'
11
- import { OrderToteList } from './order-tote-types'
12
- import { OrderToteSeal } from '../order-tote-seal/order-tote-seal'
13
-
14
- @Resolver(OrderTote)
15
- export class OrderToteQuery {
16
- @Query(returns => OrderToteList)
17
- async orderTotes(
18
- @Ctx() context: any,
19
- @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
20
- @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
21
- @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
22
- ): Promise<OrderToteList> {
23
- try {
24
- const { domain }: { domain: Domain } = context.state
25
-
26
- const releaseGoodNoParam = filters.find(item => item.name === 'releaseGoodNo')
27
-
28
- const queryBuilder = await getRepository(OrderTote).createQueryBuilder()
29
- buildQuery(queryBuilder, { filters, pagination, sortings }, context)
30
-
31
- queryBuilder
32
- .leftJoinAndSelect('OrderTote.domain', 'Domain')
33
- .leftJoinAndSelect('OrderTote.releaseGood', 'ReleaseGood')
34
- .leftJoinAndSelect('OrderTote.tote', 'Tote')
35
- .leftJoinAndSelect('OrderTote.updater', 'Updater')
36
- .where('Domain.id = :domainId', { domainId: domain.id })
37
-
38
- if (releaseGoodNoParam) {
39
- filters.splice(
40
- filters.findIndex(item => item.name == 'releaseGoodNo'),
41
- 1
42
- )
43
- queryBuilder.andWhere('ReleaseGood.name = :rgName', { rgName: releaseGoodNoParam.value })
44
- }
45
-
46
- let [items, total] = await queryBuilder.getManyAndCount()
47
-
48
- let orderToteIds: string[] = items.map(itm => itm.id)
49
-
50
- let orderToteSeals: OrderToteSeal[] = await getRepository(OrderToteSeal).find({
51
- where: { orderTote: In(orderToteIds) }
52
- })
53
-
54
- items = items.map((itm: OrderTote) => {
55
- return {
56
- ...itm,
57
- orderToteSeals: orderToteSeals.filter(seal => seal.orderToteId == itm.id)
58
- }
59
- })
60
-
61
- return { items, total }
62
- } catch (e) {
63
- throw new Error(e)
64
- }
65
- }
66
-
67
- @Query(returns => OrderTote)
68
- async orderTote(@Arg('id') id: string, @Ctx() context: any): Promise<OrderTote> {
69
- const { domain }: { domain: Domain } = context.state
70
-
71
- return await getRepository(OrderTote).findOne({
72
- where: { domain, id },
73
- relations: ['domain', 'releaseGood', 'tote', 'updater']
74
- })
75
- }
76
-
77
- @Query(returns => Boolean)
78
- async checkOrderTote(
79
- @Arg('name') name: string,
80
- @Arg('orderNo') orderNo: string,
81
- @Ctx() context: any
82
- ): Promise<Boolean> {
83
- const { domain }: { domain: Domain } = context.state
84
- let foundOrder = await getRepository(ReleaseGood).findOne({
85
- where: { name: orderNo, domain },
86
- relations: ['bizplace']
87
- })
88
- let scannedTote = await getRepository(Tote).findOne({ where: { name, bizplace: foundOrder.bizplace } })
89
-
90
- let foundOrderTote = await getRepository(OrderTote).findOne({
91
- where: { domain, releaseGood: foundOrder, name },
92
- relations: ['domain', 'releaseGood', 'tote', 'updater']
93
- })
94
-
95
- if (!foundOrderTote && scannedTote) {
96
- let executingOrderTote = await getRepository(OrderTote).find({
97
- where: { tote: scannedTote },
98
- relations: ['releaseGood']
99
- })
100
-
101
- executingOrderTote = executingOrderTote.filter(itm => itm.releaseGood.status !== 'DONE')
102
-
103
- if (executingOrderTote && executingOrderTote.length > 0) {
104
- throw new Error(`Current tote is used in another RO (${executingOrderTote[0].releaseGood.name})`)
105
- }
106
- }
107
-
108
- if (foundOrderTote?.closedDate) {
109
- return true
110
- } else {
111
- return false
112
- }
113
- }
114
- }
@@ -1,47 +0,0 @@
1
- import { Field, InputType, Int, ObjectType } from 'type-graphql'
2
-
3
- import { ObjectRef } from '@things-factory/shell'
4
-
5
- import { OrderTote } from './order-tote'
6
-
7
- @ObjectType()
8
- export class OrderToteList {
9
- @Field(type => [OrderTote], { nullable: true })
10
- items: OrderTote[]
11
-
12
- @Field(type => Int, { nullable: true })
13
- total: number
14
- }
15
-
16
- @InputType()
17
- export class NewOrderTote {
18
- @Field({ nullable: true })
19
- name: string
20
-
21
- @Field({ nullable: true })
22
- description: string
23
-
24
- @Field(type => ObjectRef, { nullable: true })
25
- releaseGood: ObjectRef
26
-
27
- @Field(type => ObjectRef, { nullable: true })
28
- tote: ObjectRef
29
- }
30
-
31
- @InputType()
32
- export class OrderTotePatch {
33
- @Field({ nullable: true })
34
- id: string
35
-
36
- @Field({ nullable: true })
37
- name: string
38
-
39
- @Field({ nullable: true })
40
- description: string
41
-
42
- @Field(type => ObjectRef, { nullable: true })
43
- releaseGood: ObjectRef
44
-
45
- @Field(type => ObjectRef, { nullable: true })
46
- tote: ObjectRef
47
- }
@@ -1,62 +0,0 @@
1
- import { Field, ObjectType } from 'type-graphql'
2
- import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import { Domain } from '@things-factory/shell'
6
- import { Tote } from '@things-factory/warehouse-base'
7
- import { ReleaseGood } from '../release-good/release-good'
8
- import { OrderToteSeal } from '../order-tote-seal/order-tote-seal'
9
-
10
- @Entity()
11
- @Index('ix_order_tote_0', (orderTote: OrderTote) => [orderTote.id], { unique: true })
12
- @ObjectType()
13
- export class OrderTote {
14
- @PrimaryGeneratedColumn('uuid')
15
- @Field()
16
- id: string
17
-
18
- @ManyToOne(type => Domain)
19
- @Field()
20
- domain: Domain
21
-
22
- @RelationId((orderTote: OrderTote) => orderTote.domain)
23
- domainId: string
24
-
25
- @Column()
26
- @Field()
27
- name: string
28
-
29
- @ManyToOne(type => ReleaseGood)
30
- @Field(type => ReleaseGood)
31
- releaseGood?: ReleaseGood
32
-
33
- @RelationId((orderTote: OrderTote) => orderTote.releaseGood)
34
- releaseGoodId: string
35
-
36
- @ManyToOne(type => Tote)
37
- @Field(type => Tote, { nullable: true })
38
- tote?: Tote
39
-
40
- @RelationId((orderTote: OrderTote) => orderTote.tote)
41
- toteId: string
42
-
43
- @Column({ nullable: true })
44
- @Field({ nullable: true })
45
- closedDate?: Date
46
-
47
- @UpdateDateColumn()
48
- @Field({ nullable: true })
49
- updatedAt: Date
50
-
51
- @ManyToOne(type => User, {
52
- nullable: true
53
- })
54
- @Field({ nullable: true })
55
- updater?: User
56
-
57
- @RelationId((orderTote: OrderTote) => orderTote.updater)
58
- updaterId: string
59
-
60
- @Field(type => [OrderToteSeal], { nullable: true })
61
- orderToteSeals?: OrderToteSeal[]
62
- }
@@ -1,9 +0,0 @@
1
- import { OrderToteItem } from './order-tote-item'
2
- import { OrderToteItemMutation } from './order-tote-item-mutation'
3
- import { OrderToteItemQuery } from './order-tote-item-query'
4
-
5
- export const entities = [OrderToteItem]
6
- export const resolvers = [OrderToteItemQuery, OrderToteItemMutation]
7
-
8
- export * from './order-tote-item-mutation'
9
- export * from './order-tote-item-query'
@@ -1,30 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
- import { EntityManager, In } from 'typeorm'
3
-
4
- import { Domain } from '@things-factory/shell'
5
-
6
- import { OrderToteItem } from './order-tote-item'
7
-
8
- @Resolver(OrderToteItem)
9
- export class OrderToteItemMutation {
10
- @Directive('@transaction')
11
- @Mutation(returns => Boolean)
12
- async deleteOrderToteItem(@Arg('name') id: string, @Ctx() context: any): Promise<Boolean> {
13
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
14
-
15
- await tx.getRepository(OrderToteItem).delete({ domain, id })
16
- return true
17
- }
18
-
19
- @Directive('@transaction')
20
- @Mutation(returns => Boolean)
21
- async deleteOrderToteItems(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<Boolean> {
22
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
23
-
24
- await tx.getRepository(OrderToteItem).delete({
25
- domain,
26
- id: In(ids)
27
- })
28
- return true
29
- }
30
- }
@@ -1,88 +0,0 @@
1
- import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { getRepository } from 'typeorm'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import { OrderProduct } from '../order-product/order-product'
6
- import { OrderTote } from '../order-tote/order-tote'
7
- import { buildQuery, Domain, Filter, Pagination, Sorting } from '@things-factory/shell'
8
- import { OrderToteItem } from './order-tote-item'
9
- import { OrderToteItemList } from './order-tote-item-types'
10
- import { Tote } from '@things-factory/warehouse-base'
11
- import { Bizplace } from '@things-factory/biz-base'
12
- import { ReleaseGood } from '../release-good/release-good'
13
- import { ProductInput } from '../invoice-product/invoice-product-types'
14
-
15
- @Resolver(OrderToteItem)
16
- export class OrderToteItemQuery {
17
- @Query(returns => OrderToteItemList)
18
- async orderToteItems(
19
- @Ctx() context: any,
20
- @Arg('toteNo', type => String) toteNo: String,
21
- @Arg('orderNo', type => String) orderNo: String,
22
- @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
23
- ): Promise<OrderToteItemList> {
24
- try {
25
- const { domain }: { domain: Domain } = context.state
26
-
27
- const foundOrder: ReleaseGood = await getRepository(ReleaseGood).findOne({
28
- where: { name: orderNo, domain }
29
- })
30
-
31
- const queryBuilder = getRepository(OrderToteItem).createQueryBuilder()
32
- buildQuery(queryBuilder, { sortings }, context)
33
-
34
- queryBuilder
35
- .select('OrderToteItem.id', 'id')
36
- .addSelect('OrderToteItem.name', 'name')
37
- .addSelect('OrderProduct.id', 'orderProductId')
38
- .addSelect('OrderProduct.name', 'orderProductName')
39
- .addSelect('Domain.id', 'domainId')
40
- .addSelect('Domain.name', 'domainName')
41
- .addSelect('SUM(OrderToteItem.qty)', 'pickedQty')
42
- .addSelect('Product.id', 'productId')
43
- .addSelect('Product.sku', 'productSku')
44
- .addSelect('Product.packingType', 'packingType')
45
- .leftJoin('OrderToteItem.domain', 'Domain')
46
- .leftJoin('OrderToteItem.orderProduct', 'OrderProduct')
47
- .leftJoin('OrderProduct.product', 'Product')
48
- .leftJoin('OrderToteItem.orderTote', 'OrderTote')
49
- .where('"OrderTote"."release_good_id" = :foundOrderId', { foundOrderId: foundOrder.id })
50
- .andWhere('Domain.id = :domainId', { domainId: domain.id })
51
- .andWhere('"OrderTote"."name" = :toteName', { toteName: toteNo })
52
- .groupBy('Product.id')
53
- .addGroupBy('OrderToteItem.id')
54
- .addGroupBy('Domain.id')
55
- .addGroupBy('OrderProduct.id')
56
-
57
- const items = await queryBuilder.getRawMany()
58
-
59
- return {
60
- items: items.map(itm => {
61
- return {
62
- ...itm,
63
- orderProduct: {
64
- id: itm.orderProductId,
65
- name: itm.orderProductName,
66
- product: { id: itm.productId, sku: itm.productSku, packingType: itm.packingType }
67
- },
68
- domain: { id: itm.domainId, name: itm.domainName },
69
- qty: itm.pickedQty
70
- }
71
- }),
72
- total: items.length
73
- }
74
- } catch (e) {
75
- throw new Error(e)
76
- }
77
- }
78
-
79
- @Query(returns => OrderToteItem)
80
- async orderToteItem(@Arg('id') id: string, @Ctx() context: any): Promise<OrderToteItem> {
81
- const { domain }: { domain: Domain } = context.state
82
-
83
- return await getRepository(OrderToteItem).findOne({
84
- where: { domain, id },
85
- relations: ['domain', 'orderProduct', 'orderInventory', 'orderTote', 'updater']
86
- })
87
- }
88
- }