@things-factory/sales-base 4.3.769 → 4.3.770

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 (49) hide show
  1. package/dist-server/service/index.js +16 -2
  2. package/dist-server/service/index.js.map +1 -1
  3. package/dist-server/service/loading-package-items/index.js +9 -0
  4. package/dist-server/service/loading-package-items/index.js.map +1 -0
  5. package/dist-server/service/loading-package-items/loading-package-items-mutation.js +120 -0
  6. package/dist-server/service/loading-package-items/loading-package-items-mutation.js.map +1 -0
  7. package/dist-server/service/loading-package-items/loading-package-items-query.js +87 -0
  8. package/dist-server/service/loading-package-items/loading-package-items-query.js.map +1 -0
  9. package/dist-server/service/loading-package-items/loading-package-items-type.js +77 -0
  10. package/dist-server/service/loading-package-items/loading-package-items-type.js.map +1 -0
  11. package/dist-server/service/loading-package-items/loading-package-items.js +173 -0
  12. package/dist-server/service/loading-package-items/loading-package-items.js.map +1 -0
  13. package/dist-server/service/loading-packages/index.js +9 -0
  14. package/dist-server/service/loading-packages/index.js.map +1 -0
  15. package/dist-server/service/loading-packages/loading-packages-mutation.js +151 -0
  16. package/dist-server/service/loading-packages/loading-packages-mutation.js.map +1 -0
  17. package/dist-server/service/loading-packages/loading-packages-query.js +316 -0
  18. package/dist-server/service/loading-packages/loading-packages-query.js.map +1 -0
  19. package/dist-server/service/loading-packages/loading-packages-type.js +77 -0
  20. package/dist-server/service/loading-packages/loading-packages-type.js.map +1 -0
  21. package/dist-server/service/loading-packages/loading-packages.js +138 -0
  22. package/dist-server/service/loading-packages/loading-packages.js.map +1 -0
  23. package/dist-server/service/order-inventory/order-inventory.js +1 -0
  24. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  25. package/dist-server/service/release-good/release-good-query.js +58 -1
  26. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  27. package/dist-server/service/release-good/release-good-types.js +15 -1
  28. package/dist-server/service/release-good/release-good-types.js.map +1 -1
  29. package/dist-server/service/release-good/release-good.js +4 -0
  30. package/dist-server/service/release-good/release-good.js.map +1 -1
  31. package/dist-server/utils/order-no-generator.js +8 -0
  32. package/dist-server/utils/order-no-generator.js.map +1 -1
  33. package/package.json +8 -8
  34. package/server/service/index.ts +16 -2
  35. package/server/service/loading-package-items/index.ts +6 -0
  36. package/server/service/loading-package-items/loading-package-items-mutation.ts +112 -0
  37. package/server/service/loading-package-items/loading-package-items-query.ts +43 -0
  38. package/server/service/loading-package-items/loading-package-items-type.ts +45 -0
  39. package/server/service/loading-package-items/loading-package-items.ts +140 -0
  40. package/server/service/loading-packages/index.ts +6 -0
  41. package/server/service/loading-packages/loading-packages-mutation.ts +150 -0
  42. package/server/service/loading-packages/loading-packages-query.ts +272 -0
  43. package/server/service/loading-packages/loading-packages-type.ts +45 -0
  44. package/server/service/loading-packages/loading-packages.ts +110 -0
  45. package/server/service/order-inventory/order-inventory.ts +1 -0
  46. package/server/service/release-good/release-good-query.ts +100 -34
  47. package/server/service/release-good/release-good-types.ts +9 -0
  48. package/server/service/release-good/release-good.ts +5 -1
  49. package/server/utils/order-no-generator.ts +12 -0
@@ -0,0 +1,110 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ Entity,
5
+ Index,
6
+ Column,
7
+ RelationId,
8
+ OneToMany,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn
11
+ } from 'typeorm'
12
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
13
+
14
+ import { Domain } from '@things-factory/shell'
15
+ import { User } from '@things-factory/auth-base'
16
+ import { Bizplace } from '@things-factory/biz-base'
17
+ import { ReleaseGood } from '../'
18
+ import { LoadingPackageItems } from '../loading-package-items/loading-package-items'
19
+
20
+ @Entity()
21
+ @Index('ix_loading_packages_0', (loadingPackages: LoadingPackages) => [loadingPackages.domain, loadingPackages.name], { unique: true })
22
+ @ObjectType({ description: 'Entity for LoadingPackages' })
23
+ export class LoadingPackages {
24
+ @PrimaryGeneratedColumn('uuid')
25
+ @Field(type => ID)
26
+ readonly id: string
27
+
28
+ @Column()
29
+ @Field()
30
+ name: string
31
+
32
+ @Column({ nullable: true })
33
+ @Field({ nullable: true })
34
+ status: string
35
+
36
+ @ManyToOne(type => Domain)
37
+ @Field({ nullable: true })
38
+ domain?: Domain
39
+
40
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.domain)
41
+ domainId?: string
42
+
43
+ @ManyToOne(type => Bizplace)
44
+ @Field(type => Bizplace, { nullable: true })
45
+ bizplace?: Bizplace
46
+
47
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.bizplace)
48
+ bizplaceId?: string
49
+
50
+ @ManyToOne(type => ReleaseGood)
51
+ @Field(type => ReleaseGood, { nullable: true })
52
+ releaseGood?: ReleaseGood
53
+
54
+ @OneToMany(type => LoadingPackageItems, loadingPackageItems => loadingPackageItems.loadingPackage)
55
+ @Field(type => [LoadingPackageItems], { nullable: true })
56
+ loadingPackageItems: LoadingPackageItems[]
57
+
58
+ @CreateDateColumn()
59
+ @Field({ nullable: true })
60
+ createdAt?: Date
61
+
62
+ @UpdateDateColumn()
63
+ @Field({ nullable: true })
64
+ updatedAt?: Date
65
+
66
+ @ManyToOne(type => User, {
67
+ nullable: true
68
+ })
69
+ @Field({ nullable: true })
70
+ creator?: User
71
+
72
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.creator)
73
+ creatorId?: string
74
+
75
+ @ManyToOne(type => User, {
76
+ nullable: true
77
+ })
78
+ @Field({ nullable: true })
79
+ updater?: User
80
+
81
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.updater)
82
+ updaterId?: string
83
+
84
+ @ManyToOne(type => User, {
85
+ nullable: true
86
+ })
87
+ @Field({ nullable: true })
88
+ printedBy?: User
89
+
90
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.printedBy)
91
+ printedById?: string
92
+
93
+ @Column({ nullable: true })
94
+ @Field({ nullable: true })
95
+ printedAt?: Date
96
+
97
+ @Column({ nullable: true })
98
+ @Field({ nullable: true })
99
+ deletedAt?: Date
100
+
101
+ @ManyToOne(type => User, { nullable: true })
102
+ @Field({ nullable: true })
103
+ deletedBy?: User
104
+
105
+ @RelationId((loadingPackages: LoadingPackages) => loadingPackages.deletedBy)
106
+ deletedById?: string
107
+
108
+ @Field(type => Int, { nullable: true })
109
+ displayNumber?: number
110
+ }
@@ -227,6 +227,7 @@ export class OrderInventory {
227
227
  orderProduct: OrderProduct
228
228
 
229
229
  @RelationId((orderInventory: OrderInventory) => orderInventory.orderProduct)
230
+ @Field({ nullable: true })
230
231
  orderProductId: string
231
232
 
232
233
  @OneToMany(type => OrderToteItem, orderToteItem => orderToteItem.orderInventory, { nullable: true })
@@ -8,6 +8,7 @@ import { logger } from '@things-factory/env'
8
8
  import { buildQuery, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
9
9
  import { Inventory, LOCATION_TYPE } from '@things-factory/warehouse-base'
10
10
 
11
+ // import { Worksheet, WORKSHEET_TYPE, WORKSHEET_STATUS } from '@things-factory/worksheet-base'
11
12
  import { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS, ORDER_VAS_STATUS } from '../../constants'
12
13
  import { convertExcelDateToISO } from '../../utils/datetime-util'
13
14
  import { OrderInventory } from '../order-inventory/order-inventory'
@@ -657,6 +658,61 @@ export class ReleaseGoodQuery {
657
658
 
658
659
  let [items, total] = await qb.getManyAndCount()
659
660
 
661
+ const releaseGoodIds = items.map(item => item.id)
662
+
663
+ // Original entity-based approach (requires @things-factory/worksheet-base dependency)
664
+ // const allWorksheetsRaw: any[] = releaseGoodIds.length > 0
665
+ // ? await getRepository(Worksheet)
666
+ // .createQueryBuilder('ws')
667
+ // .leftJoin('ws.releaseGood', 'rg')
668
+ // .where('ws.domain_id = :domainId', { domainId: domain.id })
669
+ // .andWhere('rg.id IN (:...releaseGoodIds)', { releaseGoodIds })
670
+ // .select([
671
+ // 'ws.id as id',
672
+ // 'ws.type as type',
673
+ // 'ws.status as status',
674
+ // 'ws.name as name',
675
+ // 'ws.updated_at as updated_at',
676
+ // 'rg.id as releaseGoodId'
677
+ // ])
678
+ // .orderBy('ws.updated_at', 'DESC')
679
+ // .getRawMany()
680
+ // : []
681
+
682
+ // Direct table query (no dependency needed)
683
+ const allWorksheetsRaw: any[] = releaseGoodIds.length > 0
684
+ ? await getRepository(ReleaseGood).query(
685
+ `
686
+ SELECT
687
+ ws.id as id,
688
+ ws.type as type,
689
+ ws.status as status,
690
+ ws.name as name,
691
+ ws.updated_at as updated_at,
692
+ rg.id as "releaseGoodId"
693
+ FROM worksheets ws
694
+ LEFT JOIN release_goods rg ON ws.release_good_id = rg.id
695
+ WHERE ws.domain_id = $1 AND rg.id = ANY($2)
696
+ ORDER BY ws.updated_at DESC
697
+ `,
698
+ [domain.id, releaseGoodIds]
699
+ )
700
+ : []
701
+
702
+ const worksheetMap = new Map<string, { id: string; type: string; status: string; name: string }>()
703
+ for (const ws of allWorksheetsRaw) {
704
+ const releaseGoodId = ws.releaseGoodId
705
+ const key = `${releaseGoodId}_${ws.type}`
706
+ if (!worksheetMap.has(key)) {
707
+ worksheetMap.set(key, {
708
+ id: ws.id,
709
+ type: ws.type,
710
+ status: ws.status,
711
+ name: ws.name
712
+ })
713
+ }
714
+ }
715
+
660
716
  items = await Promise.all(
661
717
  items
662
718
  .filter(item => {
@@ -667,43 +723,53 @@ export class ReleaseGoodQuery {
667
723
  where: { releaseGood: item, domain, bizplace: item.bizplace }
668
724
  })
669
725
 
670
- let newPlatformCode
671
-
672
- if (item.platformCode) {
673
- if (item.platformCode == 'LZD') {
674
- newPlatformCode = 'Lazada'
675
- } else if (item.platformCode == 'SHP') {
676
- newPlatformCode = 'Shopee'
677
- } else if (item.platformCode == 'TTK') {
678
- newPlatformCode = 'Tiktok'
679
- } else if (item.platformCode == 'SPF') {
680
- newPlatformCode = 'Shopify'
681
- }
726
+ let newPlatformCode
727
+
728
+ if (item.platformCode) {
729
+ if (item.platformCode == 'LZD') {
730
+ newPlatformCode = 'Lazada'
731
+ } else if (item.platformCode == 'SHP') {
732
+ newPlatformCode = 'Shopee'
733
+ } else if (item.platformCode == 'TTK') {
734
+ newPlatformCode = 'Tiktok'
735
+ } else if (item.platformCode == 'SPF') {
736
+ newPlatformCode = 'Shopify'
682
737
  }
738
+ }
683
739
 
684
- if (
685
- item.lastMileDelivery &&
686
- item.lastMileDelivery.isTms &&
687
- item.lastMileDelivery.platform === 'VERSA_FLEET'
688
- ) {
689
- item.refNo2 = item.vehicleNo ? item.vehicleNo : item.refNo2
690
- }
740
+ if (
741
+ item.lastMileDelivery &&
742
+ item.lastMileDelivery.isTms &&
743
+ item.lastMileDelivery.platform === 'VERSA_FLEET'
744
+ ) {
745
+ item.refNo2 = item.vehicleNo ? item.vehicleNo : item.refNo2
746
+ }
691
747
 
692
- return {
693
- ...item,
694
- platformCode: newPlatformCode ? newPlatformCode : item.platformCode,
695
- transporter: orderPackages?.length
696
- ? [
697
- ...new Set(
698
- orderPackages.map(op => {
699
- return op.transporter
700
- })
701
- )
702
- ].join(', ')
703
- : null,
704
- orderRemark: item?.remark ? true : false
705
- }
706
- })
748
+ const worksheetStatus = (item.status === 'PROCESSING' || item.status === 'PARTIAL_PROCESSING') ? 'LOADING' : item.status
749
+ const worksheetKey = `${item.id}_${worksheetStatus}`
750
+ const worksheet = worksheetMap.get(worksheetKey) || null
751
+
752
+ return {
753
+ ...item,
754
+ platformCode: newPlatformCode ? newPlatformCode : item.platformCode,
755
+ transporter: orderPackages?.length
756
+ ? [
757
+ ...new Set(
758
+ orderPackages.map(op => {
759
+ return op.transporter
760
+ })
761
+ )
762
+ ].join(', ')
763
+ : null,
764
+ orderRemark: item?.remark ? true : false,
765
+ activeWorksheet: worksheet
766
+ ? {
767
+ type: worksheet.type,
768
+ status: worksheet.status
769
+ }
770
+ : null
771
+ }
772
+ })
707
773
  )
708
774
  console.timeEnd('t1')
709
775
  return { items, total }
@@ -184,6 +184,15 @@ export class ItemCounts {
184
184
  pending: number
185
185
  }
186
186
 
187
+ @ObjectType()
188
+ export class WorksheetBasicInfo {
189
+ @Field({ nullable: true })
190
+ type?: string
191
+
192
+ @Field({ nullable: true })
193
+ status?: string
194
+ }
195
+
187
196
  @ObjectType()
188
197
  export class TabCountItem {
189
198
  @Field()
@@ -35,7 +35,8 @@ import {
35
35
  ShippingOrder,
36
36
  ShippingOrderInfo,
37
37
  ItemCounts,
38
- TabCounts
38
+ TabCounts,
39
+ WorksheetBasicInfo
39
40
  } from '../'
40
41
  import { ReleaseOrderType } from '../../constants'
41
42
 
@@ -678,4 +679,7 @@ export class ReleaseGood {
678
679
 
679
680
  @Field(() => TabCounts, { nullable: true })
680
681
  tabCounts: TabCounts
682
+
683
+ @Field(() => WorksheetBasicInfo, { nullable: true })
684
+ activeWorksheet?: WorksheetBasicInfo
681
685
  }
@@ -78,6 +78,18 @@ export class OrderNoGenerator {
78
78
  return `OPKI-${uuidv4()}`
79
79
  }
80
80
 
81
+ static loadingPackage() {
82
+ const currentDate = new Date()
83
+ const randomString = Math.random().toString(36).slice(2, 5)
84
+ return `LPK${currentDate.getFullYear()}${
85
+ currentDate.getMonth() + 1
86
+ }${currentDate.getDate()}${currentDate.getHours()}${currentDate.getMinutes()}${currentDate.getSeconds()}${currentDate.getMilliseconds()}${randomString}`
87
+ }
88
+
89
+ static loadingPackageItem() {
90
+ return `LPKI-${uuidv4()}`
91
+ }
92
+
81
93
  static invoiceProduct() {
82
94
  return `IP-${uuidv4()}`
83
95
  }