@things-factory/sales-base 4.3.448 → 4.3.452

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 (55) hide show
  1. package/dist-server/constants/order.js +3 -1
  2. package/dist-server/constants/order.js.map +1 -1
  3. package/dist-server/service/draft-release-good/draft-release-good-create.js +587 -0
  4. package/dist-server/service/draft-release-good/draft-release-good-create.js.map +1 -0
  5. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +3 -232
  6. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  7. package/dist-server/service/draft-release-good/draft-release-good-query.js +59 -28
  8. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  9. package/dist-server/service/draft-release-good/draft-release-good-type.js +33 -1
  10. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
  11. package/dist-server/service/draft-release-good/draft-release-good.js +2 -7
  12. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  13. package/dist-server/service/draft-release-good/index.js +4 -2
  14. package/dist-server/service/draft-release-good/index.js.map +1 -1
  15. package/dist-server/service/order-vas/order-vas-mutation.js +46 -23
  16. package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
  17. package/dist-server/service/order-vas/order-vas-query.js +34 -0
  18. package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
  19. package/dist-server/service/order-vas/order-vas-types.js +4 -0
  20. package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
  21. package/dist-server/service/order-vas/order-vas.js +22 -1
  22. package/dist-server/service/order-vas/order-vas.js.map +1 -1
  23. package/dist-server/service/order-vas-item/order-vas-item-type.js +8 -0
  24. package/dist-server/service/order-vas-item/order-vas-item-type.js.map +1 -1
  25. package/dist-server/service/order-vas-item/order-vas-item.js +5 -0
  26. package/dist-server/service/order-vas-item/order-vas-item.js.map +1 -1
  27. package/dist-server/service/release-good/release-good-mutation.js +5 -3
  28. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  29. package/dist-server/service/release-good/release-good-query.js +4 -1
  30. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  31. package/dist-server/service/release-good/release-good.js +9 -0
  32. package/dist-server/service/release-good/release-good.js.map +1 -1
  33. package/dist-server/service/vas/vas-mutation.js +5 -1
  34. package/dist-server/service/vas/vas-mutation.js.map +1 -1
  35. package/dist-server/utils/inventory-util.js +5 -3
  36. package/dist-server/utils/inventory-util.js.map +1 -1
  37. package/package.json +15 -15
  38. package/server/constants/order.ts +3 -1
  39. package/server/service/draft-release-good/draft-release-good-create.ts +715 -0
  40. package/server/service/draft-release-good/draft-release-good-mutation.ts +36 -288
  41. package/server/service/draft-release-good/draft-release-good-query.ts +109 -89
  42. package/server/service/draft-release-good/draft-release-good-type.ts +28 -2
  43. package/server/service/draft-release-good/draft-release-good.ts +2 -8
  44. package/server/service/draft-release-good/index.ts +4 -2
  45. package/server/service/order-vas/order-vas-mutation.ts +57 -29
  46. package/server/service/order-vas/order-vas-query.ts +43 -1
  47. package/server/service/order-vas/order-vas-types.ts +5 -8
  48. package/server/service/order-vas/order-vas.ts +19 -10
  49. package/server/service/order-vas-item/order-vas-item-type.ts +6 -0
  50. package/server/service/order-vas-item/order-vas-item.ts +4 -0
  51. package/server/service/release-good/release-good-mutation.ts +8 -2
  52. package/server/service/release-good/release-good-query.ts +7 -2
  53. package/server/service/release-good/release-good.ts +8 -0
  54. package/server/service/vas/vas-mutation.ts +4 -1
  55. package/server/utils/inventory-util.ts +29 -6
@@ -1,4 +1,9 @@
1
- import { Field, InputType, Int, ObjectType } from 'type-graphql'
1
+ import {
2
+ Field,
3
+ InputType,
4
+ Int,
5
+ ObjectType
6
+ } from 'type-graphql'
2
7
 
3
8
  import { ObjectRef } from '@things-factory/shell'
4
9
 
@@ -266,8 +271,29 @@ export class DraftReleaseGoodPatch {
266
271
  @ObjectType()
267
272
  export class DraftReleaseGoodList {
268
273
  @Field(type => [DraftReleaseGood])
269
- items: DraftReleaseGood[]
274
+ items?: DraftReleaseGood[]
270
275
 
271
276
  @Field(type => Int)
272
277
  total: number
278
+
279
+ @Field({ nullable: true })
280
+ settingValue: string
281
+ }
282
+
283
+ @ObjectType()
284
+ export class SuccessReleasedDraftOrder {
285
+ @Field({ nullable: true })
286
+ draftName?: string
287
+
288
+ @Field({ nullable: true })
289
+ isProductBundle?: Boolean
290
+ }
291
+
292
+ @InputType()
293
+ export class DraftReleaseGoodInfos {
294
+ @Field()
295
+ id: String
296
+
297
+ @Field()
298
+ releaseType?: string
273
299
  }
@@ -17,8 +17,8 @@ import { Attachment } from '@things-factory/attachment-base'
17
17
  import { User } from '@things-factory/auth-base'
18
18
  import { Bizplace, ContactPoint } from '@things-factory/biz-base'
19
19
  import { config } from '@things-factory/env'
20
- import { Domain } from '@things-factory/shell'
21
20
  import { LastMileDelivery } from '@things-factory/integration-lmd'
21
+ import { Domain } from '@things-factory/shell'
22
22
 
23
23
  import { OrderProduct, ReleaseGood, ShippingOrder, ShippingOrderInfo } from '../'
24
24
  import { ReleaseOrderType } from '../../constants'
@@ -66,14 +66,9 @@ export class DraftReleaseGood {
66
66
  @Field({ nullable: true })
67
67
  name: string
68
68
 
69
- @OneToOne(type => ReleaseGood)
70
- @JoinColumn()
69
+ @OneToMany(type => ReleaseGood, releaseGood => releaseGood.draftReleaseGood)
71
70
  @Field(type => ReleaseGood, { nullable: true })
72
71
  releaseGood: ReleaseGood
73
-
74
- @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.releaseGood)
75
- releaseGoodId: string
76
-
77
72
  @OneToOne(type => ShippingOrder)
78
73
  @JoinColumn()
79
74
  @Field(type => ShippingOrder, { nullable: true })
@@ -356,4 +351,3 @@ export class DraftReleaseGood {
356
351
  @RelationId((draftReleaseGood: DraftReleaseGood) => draftReleaseGood.lastMileDelivery)
357
352
  lastMileDeliveryId?: string
358
353
  }
359
-
@@ -1,9 +1,11 @@
1
1
  import { DraftReleaseGood } from './draft-release-good'
2
- import { DraftReleaseGoodQuery } from './draft-release-good-query'
2
+ import { DraftReleaseGoodCreate } from './draft-release-good-create'
3
3
  import { DraftReleaseGoodMutation } from './draft-release-good-mutation'
4
+ import { DraftReleaseGoodQuery } from './draft-release-good-query'
4
5
 
5
6
  export const entities = [DraftReleaseGood]
6
- export const resolvers = [DraftReleaseGoodQuery, DraftReleaseGoodMutation]
7
+ export const resolvers = [DraftReleaseGoodQuery, DraftReleaseGoodMutation, DraftReleaseGoodCreate]
7
8
 
8
9
  export * from './draft-release-good-mutation'
9
10
  export * from './draft-release-good-query'
11
+ export * from './draft-release-good-create'
@@ -1,8 +1,12 @@
1
+ import { User } from '@things-factory/auth-base'
1
2
  import { Domain } from '@things-factory/shell'
2
3
  import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
3
- import { EntityManager, getRepository } from 'typeorm'
4
- import { OrderVasPatch } from '../'
4
+ import { EntityManager, getRepository, In } from 'typeorm'
5
+ import { OrderVasPatch, OrderVasItemPatch } from '../'
5
6
  import { OrderVas } from './order-vas'
7
+ import { OrderVasItem } from '../order-vas-item/order-vas-item'
8
+ import { ReleaseGood } from '../release-good/release-good'
9
+ import { v4 as uuidv4 } from 'uuid'
6
10
  // import { WorksheetDetail } from '@things-factory/worksheet-base'
7
11
 
8
12
  @Resolver(OrderVas)
@@ -23,46 +27,61 @@ export class OrderVasMutation {
23
27
  @Directive('@transaction')
24
28
  @Mutation(returns => [OrderVas])
25
29
  async updateMultipleOrderVas(
30
+ @Arg('orderNo') orderNo: string,
26
31
  @Arg('patches', type => [OrderVasPatch]) patches: OrderVasPatch[],
27
32
  @Ctx() context: any
28
- ): Promise<OrderVasPatch[]> {
29
- const { domain, user } = context.state
33
+ ): Promise<OrderVas[]> {
34
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
30
35
 
31
- let results = []
32
- const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
33
- const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
34
- const orderVasRepo = getRepository(OrderVas)
36
+ const releaseGood = await tx.getRepository(ReleaseGood).findOne({ where: { name: orderNo, domain: domain.id } })
37
+
38
+ patches.forEach(patch => (patch.releaseGood = releaseGood))
39
+
40
+ const createPatches = patches.filter(patch => patch.cuFlag.toUpperCase() === '+')
41
+ const updatePatches = patches.filter(patch => patch.cuFlag.toUpperCase() === 'M')
35
42
 
36
- if (_createRecords.length > 0) {
37
- for (let i = 0; i < _createRecords.length; i++) {
38
- const newRecord = _createRecords[i]
43
+ const orderVasRepo = tx.getRepository(OrderVas)
44
+ const orderVasItemRepo = tx.getRepository(OrderVasItem)
45
+ let results = []
39
46
 
40
- const result = await orderVasRepo.save({
41
- ...newRecord,
47
+ // Handle creation
48
+ for (const newRecord of createPatches) {
49
+ const savedOrderVas = await orderVasRepo.save({
50
+ ...newRecord,
51
+ name: uuidv4(),
52
+ releaseGood: newRecord.releaseGood,
53
+ domain: domain,
54
+ creator: user,
55
+ updater: user
56
+ })
57
+
58
+ results.push(savedOrderVas)
59
+
60
+ for (const itemPatch of newRecord.orderVasItemsPatch) {
61
+ await orderVasItemRepo.save({
62
+ orderVas: savedOrderVas,
63
+ name: `${itemPatch.vas.name} (${itemPatch.vas.description})- ${savedOrderVas.id}`,
64
+ vas: itemPatch.vas,
65
+ vasQty: itemPatch.vasQty,
66
+ vasRemark: itemPatch.vasRemark,
42
67
  domain: domain,
43
- creator: user,
44
- updater: user
68
+ creator: user
45
69
  })
46
-
47
- results.push({ ...result, cuFlag: '+' })
48
70
  }
49
71
  }
50
72
 
51
- if (_updateRecords.length > 0) {
52
- for (let i = 0; i < _updateRecords.length; i++) {
53
- const newRecord = _updateRecords[i]
54
- const orderVas = await orderVasRepo.findOne({
55
- where: { domain, id: newRecord.id },
56
- relations: ['product', 'productDetail', 'newProduct', 'newProductDetail', 'releaseGood', 'orderVasItems']
57
- })
73
+ // Handle updates
74
+ for (const patch of updatePatches) {
75
+ for (const itemPatch of patch.orderVasItemsPatch) {
76
+ const existingOrderVasItem = await orderVasItemRepo.findOne({ where: { orderVas: patch.id } })
58
77
 
59
- const result = await orderVasRepo.save({
60
- ...orderVas,
61
- ...newRecord,
78
+ const updateData = {
79
+ vasQty: itemPatch.vasQty,
80
+ vasRemark: itemPatch.vasRemark,
62
81
  updater: user
63
- })
82
+ }
64
83
 
65
- results.push({ ...result, cuFlag: 'M' })
84
+ await orderVasItemRepo.update(existingOrderVasItem.id, updateData)
66
85
  }
67
86
  }
68
87
 
@@ -74,6 +93,15 @@ export class OrderVasMutation {
74
93
  @Mutation(returns => Boolean)
75
94
  async deleteOrderVas(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
76
95
  const { tx }: { tx: EntityManager } = context.state
96
+
97
+ // Retrieve and delete all related OrderVasItems
98
+ const orderVasItemRepo = tx.getRepository(OrderVasItem)
99
+ const orderVasItems = await orderVasItemRepo.find({ where: { orderVas: id } })
100
+ if (orderVasItems.length > 0) {
101
+ await orderVasItemRepo.remove(orderVasItems)
102
+ }
103
+
104
+ // Delete the OrderVas
77
105
  await tx.getRepository(OrderVas).delete(id)
78
106
  return true
79
107
  }
@@ -2,7 +2,7 @@ import { User } from '@things-factory/auth-base'
2
2
  import { convertListParams, Domain, Filter, Pagination, Sorting } from '@things-factory/shell'
3
3
  import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
4
4
  import { getRepository } from 'typeorm'
5
- import { OrderVasList } from '../'
5
+ import { OrderVasList, ReleaseGood } from '../'
6
6
  import { OrderVas } from './order-vas'
7
7
 
8
8
  @Resolver(OrderVas)
@@ -34,6 +34,48 @@ export class OrderVasQuery {
34
34
  return { items, total }
35
35
  }
36
36
 
37
+ @Query(returns => OrderVasList)
38
+ async orderVasList(
39
+ @Ctx() context: any,
40
+ @Arg('bizplaceId') bizplaceId: string,
41
+ @Arg('orderNo') orderNo: string
42
+ ): Promise<OrderVasList> {
43
+ const { domain }: { domain: Domain } = context.state
44
+
45
+ const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
46
+ where: { name: orderNo, domain: domain.id, bizplace: bizplaceId }
47
+ })
48
+
49
+ // Possible enhancement: Add creator type or add a new boolean column to determine is vas is added by warehouse staff
50
+ const qb = getRepository(OrderVas).createQueryBuilder('ov')
51
+ qb.innerJoinAndSelect('ov.orderVasItems', 'ovi')
52
+ .innerJoinAndSelect('ovi.vas', 'v')
53
+ .where('ov.bizplace_id = :bizplaceId AND ov.domain_id = :domainId AND ov.release_good_id = :releaseGoodId', {
54
+ bizplaceId,
55
+ domainId: domain.id,
56
+ releaseGoodId: releaseGood.id
57
+ })
58
+ .andWhere('ov.batch_id IS NULL')
59
+ .andWhere('ov.qty IS NULL')
60
+ .andWhere('ov.output_qty IS NULL')
61
+ .andWhere('ov.product_id IS NULL')
62
+ .andWhere('ov.product_detail_id IS NULL')
63
+
64
+ let items = await qb.getRawMany()
65
+
66
+ items = items.map(item => {
67
+ return {
68
+ ...item,
69
+ orderVas: { id: item.ov_id },
70
+ vassId: item.v_id,
71
+ vasName: item.v_name,
72
+ vasQty: item?.ovi_vas_qty,
73
+ vasRemark: item?.ovi_vas_remark
74
+ }
75
+ })
76
+ return { items }
77
+ }
78
+
37
79
  @Query(returns => OrderVas)
38
80
  async orderVas(@Arg('name') name: string, @Ctx() context: any): Promise<OrderVas> {
39
81
  const { domain }: { domain: Domain } = context.state
@@ -1,10 +1,4 @@
1
- import {
2
- Field,
3
- Float,
4
- InputType,
5
- Int,
6
- ObjectType
7
- } from 'type-graphql'
1
+ import { Field, Float, InputType, Int, ObjectType } from 'type-graphql'
8
2
 
9
3
  import { ObjectRef } from '@things-factory/shell'
10
4
 
@@ -17,7 +11,7 @@ export class OrderVasList {
17
11
  items: OrderVas[]
18
12
 
19
13
  @Field(type => Int, { nullable: true })
20
- total: number
14
+ total?: number
21
15
  }
22
16
 
23
17
  @InputType()
@@ -175,6 +169,9 @@ export class OrderVasPatch {
175
169
  @Field({ nullable: true })
176
170
  newProductDetail: string
177
171
 
172
+ @Field({ nullable: true })
173
+ newBatchId: string
174
+
178
175
  @Field({ nullable: true })
179
176
  newPackingType: string
180
177
 
@@ -1,8 +1,4 @@
1
- import {
2
- Field,
3
- ID,
4
- ObjectType
5
- } from 'type-graphql'
1
+ import { Field, ID, ObjectType } from 'type-graphql'
6
2
  import {
7
3
  Column,
8
4
  CreateDateColumn,
@@ -17,10 +13,7 @@ import {
17
13
 
18
14
  import { User } from '@things-factory/auth-base'
19
15
  import { Bizplace } from '@things-factory/biz-base'
20
- import {
21
- Product,
22
- ProductDetail
23
- } from '@things-factory/product-base'
16
+ import { Product, ProductDetail } from '@things-factory/product-base'
24
17
  import { Domain } from '@things-factory/shell'
25
18
  import { Inventory } from '@things-factory/warehouse-base'
26
19
 
@@ -60,7 +53,7 @@ export class OrderVas {
60
53
  bizplaceId: string
61
54
 
62
55
  @Column()
63
- @Field()
56
+ @Field({ nullable: true })
64
57
  name: string
65
58
 
66
59
  @Column({ nullable: true })
@@ -259,6 +252,10 @@ export class OrderVas {
259
252
  @Field({ nullable: true })
260
253
  remark: string
261
254
 
255
+ @Column({ nullable: true })
256
+ @Field({ nullable: true })
257
+ newBatchId: string
258
+
262
259
  @Column({ nullable: true })
263
260
  @Field({ nullable: true })
264
261
  newPackingType: string
@@ -304,4 +301,16 @@ export class OrderVas {
304
301
 
305
302
  @RelationId((orderVas: OrderVas) => orderVas.updater)
306
303
  updaterId: string
304
+
305
+ @Field({ nullable: true })
306
+ vassId: string
307
+
308
+ @Field({ nullable: true })
309
+ vasName?: string
310
+
311
+ @Field({ nullable: true })
312
+ vasQty?: number
313
+
314
+ @Field({ nullable: true })
315
+ vasRemark?: string
307
316
  }
@@ -20,6 +20,9 @@ export class NewOrderVasItem {
20
20
 
21
21
  @Field({ nullable: true })
22
22
  params?: string
23
+
24
+ @Field({ nullable: true })
25
+ vasRemark?: string
23
26
  }
24
27
 
25
28
  @InputType()
@@ -57,6 +60,9 @@ export class OrderVasItemPatch {
57
60
  @Field({ nullable: true })
58
61
  active?: boolean
59
62
 
63
+ @Field({ nullable: true })
64
+ vasRemark?: string
65
+
60
66
  @Field()
61
67
  cuFlag: string
62
68
  }
@@ -96,6 +96,10 @@ export class OrderVasItem {
96
96
  @Field({ nullable: true })
97
97
  executedAt?: Date
98
98
 
99
+ @Column({ nullable: true })
100
+ @Field({ nullable: true })
101
+ vasRemark?: string
102
+
99
103
  @CreateDateColumn()
100
104
  @Field({ nullable: true })
101
105
  createdAt?: Date
@@ -1490,6 +1490,7 @@ export async function bulkGenerateReleaseGood(
1490
1490
  roNoSetting: any,
1491
1491
  domain: Domain,
1492
1492
  user: User,
1493
+ draftOrder?: any,
1493
1494
  tx?: EntityManager
1494
1495
  ): Promise<ReleaseGood> {
1495
1496
  try {
@@ -1536,6 +1537,7 @@ export async function bulkGenerateReleaseGood(
1536
1537
  refNo: releaseGood.refNo,
1537
1538
  refNo2: releaseGood.refNo2,
1538
1539
  refNo3: releaseGood.refNo3,
1540
+ draftReleaseGood: draftOrder || null,
1539
1541
  releaseDate: releaseGood.releaseDate,
1540
1542
  ownTransport: releaseGood?.ownTransport || false,
1541
1543
  orderMethod: ORDER_METHOD.SELECT_BY_PRODUCT,
@@ -1657,8 +1659,12 @@ export async function bulkGenerateReleaseGood(
1657
1659
  newOrderProduct = await tx.getRepository(OrderProduct).save({
1658
1660
  ...oi.orderProduct,
1659
1661
  totalUomValue: `${oi.orderProduct.releaseUomValue} ${oi.orderProduct.uom}`,
1660
- status: ORDER_PRODUCT_STATUS.ASSIGNED,
1661
- updater: newReleaseGood?.updater || user
1662
+ status:
1663
+ oi.orderProduct.status === 'partial-release'
1664
+ ? ORDER_PRODUCT_STATUS.PARTIAL_RELEASED
1665
+ : ORDER_PRODUCT_STATUS.ASSIGNED,
1666
+ updater: newReleaseGood?.updater || user,
1667
+ releaseGood: newReleaseGood
1662
1668
  })
1663
1669
  }
1664
1670
 
@@ -179,6 +179,7 @@ export class ReleaseGoodQuery {
179
179
  relations: [
180
180
  'domain',
181
181
  'bizplace',
182
+ 'draftReleaseGood',
182
183
  'shippingOrder',
183
184
  'arrivalNotice',
184
185
  'orderProducts',
@@ -494,6 +495,7 @@ export class ReleaseGoodQuery {
494
495
  qb.leftJoinAndSelect('rg.creator', 'creator')
495
496
  qb.leftJoinAndSelect('rg.updater', 'updater')
496
497
  qb.leftJoinAndSelect('rg.acceptedBy', 'acceptedBy')
498
+ qb.leftJoinAndSelect('rg.draftReleaseGood', 'draftReleaseGood')
497
499
  qb.leftJoinAndSelect('rg.deliverTo', 'deliverTo')
498
500
  qb.leftJoin(
499
501
  subQuery => {
@@ -567,12 +569,15 @@ export class ReleaseGoodQuery {
567
569
  })
568
570
  .join(',')
569
571
 
570
- qb.andWhere(`(
572
+ qb.andWhere(
573
+ `(
571
574
  lower(rg.name) like any(array[${orderInfos}])
572
575
  or lower(rg.ref_no) like any(array[${orderInfos}])
573
576
  or lower(rg.ref_no_2) like any(array[${orderInfos}])
574
577
  or lower(rg.ref_no_3) like any(array[${orderInfos}])
575
- )`)
578
+ or lower(draftReleaseGood.name) like any(array[${orderInfos}])
579
+ )`
580
+ )
576
581
  }
577
582
 
578
583
  const arrChildSortData = ['bizplace', 'creator']
@@ -23,6 +23,7 @@ import { Domain } from '@things-factory/shell'
23
23
  import {
24
24
  ArrivalNotice,
25
25
  DeliveryOrder,
26
+ DraftReleaseGood,
26
27
  InventoryInfos,
27
28
  Manifest,
28
29
  OrderInventory,
@@ -81,6 +82,13 @@ export class ReleaseGood {
81
82
  @RelationId((releaseGood: ReleaseGood) => releaseGood.bizplace)
82
83
  bizplaceId: string
83
84
 
85
+ @ManyToOne(() => DraftReleaseGood, draftReleaseGood => draftReleaseGood.releaseGood)
86
+ @Field(type => DraftReleaseGood, { nullable: true })
87
+ draftReleaseGood: DraftReleaseGood
88
+
89
+ @RelationId((releaseGood: ReleaseGood) => releaseGood.draftReleaseGood)
90
+ draftReleaseGoodId: string
91
+
84
92
  @ManyToOne(type => Manifest)
85
93
  @Field(type => Manifest, { nullable: true })
86
94
  manifest: Manifest
@@ -166,6 +166,7 @@ export async function editVas(
166
166
  name: `${newRecord.orderVasItemsPatch[ii].vas.name} (${newRecord.orderVasItemsPatch[ii].vas.description})- ${result.id}`,
167
167
  vas: newRecord.orderVasItemsPatch[ii].vas,
168
168
  vasQty: newRecord.orderVasItemsPatch[ii].vasQty,
169
+ vasRemark: newRecord.orderVasItemsPatch[ii]?.vasRemark,
169
170
  domain: domain,
170
171
  creator: user,
171
172
  createdAt: new Date()
@@ -198,6 +199,7 @@ export async function editVas(
198
199
  name: `${newRecord.orderVasItemsPatch[ii].vas.name}- ${result.id}`,
199
200
  vas: newRecord.orderVasItemsPatch[ii].vas,
200
201
  vasQty: newRecord.orderVasItemsPatch[ii].vasQty,
202
+ vasRemark: newRecord.orderVasItemsPatch[ii]?.vasRemark,
201
203
  domain: domain,
202
204
  creator: user,
203
205
  createdAt: new Date()
@@ -232,6 +234,7 @@ export async function editVas(
232
234
  name: `${newRecord.vas.name}- ${newRecord.orderVas.id}`,
233
235
  vas: newRecord.vas,
234
236
  vasQty: newRecord.vasQty,
237
+ vasRemark: newRecord?.vasRemark,
235
238
  domain: domain,
236
239
  creator: user,
237
240
  createdAt: new Date()
@@ -248,7 +251,7 @@ export async function editVas(
248
251
  {
249
252
  id: newRecord.id
250
253
  },
251
- { vasQty: newRecord.vasQty, updater: user.id, updatedAt: new Date() }
254
+ { vasQty: newRecord.vasQty,vasRemark: newRecord?.vasRemark, updater: user.id, updatedAt: new Date() }
252
255
  )
253
256
 
254
257
  results.push({ ...result, cuFlag: 'M' })
@@ -1,10 +1,29 @@
1
- import { EntityManager, Equal, getRepository, In, Not, Raw, Repository, SelectQueryBuilder } from 'typeorm'
1
+ import {
2
+ EntityManager,
3
+ Equal,
4
+ getRepository,
5
+ In,
6
+ Not,
7
+ Raw,
8
+ Repository,
9
+ SelectQueryBuilder
10
+ } from 'typeorm'
2
11
 
3
12
  import { User } from '@things-factory/auth-base'
4
13
  import { Bizplace } from '@things-factory/biz-base'
5
- import { Product, ProductBundle, ProductDetail } from '@things-factory/product-base'
6
- import { PartnerSetting, Setting } from '@things-factory/setting-base'
7
- import { Domain, ListParam } from '@things-factory/shell'
14
+ import {
15
+ Product,
16
+ ProductBundle,
17
+ ProductDetail
18
+ } from '@things-factory/product-base'
19
+ import {
20
+ PartnerSetting,
21
+ Setting
22
+ } from '@things-factory/setting-base'
23
+ import {
24
+ Domain,
25
+ ListParam
26
+ } from '@things-factory/shell'
8
27
  import {
9
28
  generateInventoryHistory,
10
29
  Inventory,
@@ -238,6 +257,8 @@ export const InventoryUtil = {
238
257
  items = await trxMgr.query(`select * from temp_inventory_product_group`)
239
258
  }
240
259
 
260
+ await trxMgr.query(`drop table temp_inventory_product_group`)
261
+
241
262
  return { items, total }
242
263
  } catch (error) {
243
264
  throw error
@@ -745,7 +766,7 @@ export const InventoryUtil = {
745
766
  }
746
767
  })
747
768
 
748
- return _composeTargetInventories(productDetail, orderInventory, inventories)
769
+ return _composeTargetInventories(product, productDetail, orderInventory, inventories)
749
770
  },
750
771
 
751
772
  /**
@@ -1059,6 +1080,7 @@ export async function switchLocationStatus(
1059
1080
  }
1060
1081
 
1061
1082
  export function _composeTargetInventories(
1083
+ product: Product,
1062
1084
  productDetail: ProductDetail,
1063
1085
  record: any,
1064
1086
  inventories: Inventory[]
@@ -1068,7 +1090,8 @@ export function _composeTargetInventories(
1068
1090
  let compReleaseQty: number = 0
1069
1091
  let compReleaseUomValue: number = 0
1070
1092
  let totalInventoryQty: number = inventories.reduce((total, inventory) => total + inventory.remainQty, 0)
1071
- let product = productDetail.product
1093
+
1094
+ if (!product) product = productDetail.product
1072
1095
 
1073
1096
  if (totalInventoryQty < record.releaseQty) {
1074
1097
  throw new Error(`invalid release qty for ${product?.sku}`)