@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.
- package/dist-server/service/index.js +16 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/loading-package-items/index.js +9 -0
- package/dist-server/service/loading-package-items/index.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-mutation.js +120 -0
- package/dist-server/service/loading-package-items/loading-package-items-mutation.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-query.js +87 -0
- package/dist-server/service/loading-package-items/loading-package-items-query.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items-type.js +77 -0
- package/dist-server/service/loading-package-items/loading-package-items-type.js.map +1 -0
- package/dist-server/service/loading-package-items/loading-package-items.js +173 -0
- package/dist-server/service/loading-package-items/loading-package-items.js.map +1 -0
- package/dist-server/service/loading-packages/index.js +9 -0
- package/dist-server/service/loading-packages/index.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-mutation.js +151 -0
- package/dist-server/service/loading-packages/loading-packages-mutation.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-query.js +316 -0
- package/dist-server/service/loading-packages/loading-packages-query.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages-type.js +77 -0
- package/dist-server/service/loading-packages/loading-packages-type.js.map +1 -0
- package/dist-server/service/loading-packages/loading-packages.js +138 -0
- package/dist-server/service/loading-packages/loading-packages.js.map +1 -0
- package/dist-server/service/order-inventory/order-inventory.js +1 -0
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +58 -1
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js +15 -1
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +4 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/utils/order-no-generator.js +8 -0
- package/dist-server/utils/order-no-generator.js.map +1 -1
- package/package.json +8 -8
- package/server/service/index.ts +16 -2
- package/server/service/loading-package-items/index.ts +6 -0
- package/server/service/loading-package-items/loading-package-items-mutation.ts +112 -0
- package/server/service/loading-package-items/loading-package-items-query.ts +43 -0
- package/server/service/loading-package-items/loading-package-items-type.ts +45 -0
- package/server/service/loading-package-items/loading-package-items.ts +140 -0
- package/server/service/loading-packages/index.ts +6 -0
- package/server/service/loading-packages/loading-packages-mutation.ts +150 -0
- package/server/service/loading-packages/loading-packages-query.ts +272 -0
- package/server/service/loading-packages/loading-packages-type.ts +45 -0
- package/server/service/loading-packages/loading-packages.ts +110 -0
- package/server/service/order-inventory/order-inventory.ts +1 -0
- package/server/service/release-good/release-good-query.ts +100 -34
- package/server/service/release-good/release-good-types.ts +9 -0
- package/server/service/release-good/release-good.ts +5 -1
- 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
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
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
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
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
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
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
|
}
|