@things-factory/worksheet-base 4.0.0-y.0 → 4.0.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.
- package/dist-server/controllers/ecommerce/ecommerce-controller.js +23 -9
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +1 -0
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +168 -0
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +6 -5
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/index.js +1 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +43 -8
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +16 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +17 -9
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-grn.js +192 -0
- package/dist-server/controllers/render-grn.js.map +1 -0
- package/dist-server/controllers/render-job-sheet.js +51 -35
- package/dist-server/controllers/render-job-sheet.js.map +1 -1
- package/dist-server/controllers/render-kimeda-grn.js +12 -5
- package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
- package/dist-server/controllers/render-ro-do.js +19 -5
- package/dist-server/controllers/render-ro-do.js.map +1 -1
- package/dist-server/controllers/render-seebuu-grn.js +9 -3
- package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +75 -14
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +61 -8
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +23 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +4 -2
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +25 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +24 -38
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +60 -19
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +20 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +24 -14
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +19 -0
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +124 -149
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +13 -4
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +21 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +18 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +302 -11
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +137 -31
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +157 -42
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +35 -21
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +33 -27
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +39 -10
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +3 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +3 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
- package/dist-server/graphql/types/index.js +2 -1
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/pallet/index.js +10 -0
- package/dist-server/graphql/types/pallet/index.js.map +1 -0
- package/dist-server/graphql/types/worksheet/airwaybill.js +10 -0
- package/dist-server/graphql/types/worksheet/airwaybill.js.map +1 -0
- package/dist-server/graphql/types/worksheet/index.js +10 -2
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +2 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/index.js +2 -1
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/routes.js +10 -6
- package/dist-server/routes.js.map +1 -1
- package/dist-server/utils/inventory-util.js +7 -3
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +16 -15
- package/server/controllers/ecommerce/ecommerce-controller.ts +37 -10
- package/server/controllers/ecommerce/index.ts +1 -0
- package/server/controllers/ecommerce/sellercraft-controller.ts +223 -0
- package/server/controllers/inbound/unloading-worksheet-controller.ts +16 -13
- package/server/controllers/index.ts +1 -0
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +108 -43
- package/server/controllers/outbound/packing-worksheet-controller.ts +21 -4
- package/server/controllers/outbound/picking-worksheet-controller.ts +26 -11
- package/server/controllers/render-grn.ts +218 -0
- package/server/controllers/render-job-sheet.ts +51 -39
- package/server/controllers/render-kimeda-grn.ts +16 -12
- package/server/controllers/render-ro-do.ts +22 -6
- package/server/controllers/render-seebuu-grn.ts +12 -12
- package/server/controllers/vas/vas-worksheet-controller.ts +104 -23
- package/server/controllers/worksheet-controller.ts +87 -22
- package/server/graphql/resolvers/pallet/pallet-outbound.ts +2 -1
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +30 -2
- package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +7 -4
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +30 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +18 -3
- package/server/graphql/resolvers/worksheet/index.ts +6 -4
- package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +4 -2
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +20 -3
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +30 -49
- package/server/graphql/resolvers/worksheet/packing/packing.ts +22 -3
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +22 -3
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +71 -20
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +32 -3
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +31 -17
- package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +4 -3
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +31 -3
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +143 -175
- package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +5 -4
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +5 -2
- package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +1 -1
- package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +22 -9
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +27 -4
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +23 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +452 -14
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +36 -1
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +8 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +185 -56
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +210 -54
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +64 -32
- package/server/graphql/resolvers/worksheet/worksheet.ts +67 -62
- package/server/graphql/resolvers/worksheet/worksheets.ts +51 -13
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +1 -0
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +2 -1
- package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +2 -1
- package/server/graphql/types/index.ts +2 -1
- package/server/graphql/types/pallet/index.ts +6 -0
- package/server/graphql/types/worksheet/airwaybill.ts +7 -0
- package/server/graphql/types/worksheet/index.ts +10 -2
- package/server/graphql/types/worksheet/worksheet-info.ts +2 -0
- package/server/graphql/types/worksheet-detail/index.ts +2 -1
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
- package/server/routes.ts +11 -6
- package/server/utils/inventory-util.ts +14 -5
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
|
|
2
|
-
import { Domain } from '@things-factory/shell'
|
|
3
1
|
import { EntityManager } from 'typeorm'
|
|
4
|
-
|
|
5
|
-
import {
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
|
|
6
5
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
6
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
7
7
|
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
import {
|
|
8
|
+
import { ReleaseGood } from '@things-factory/sales-base'
|
|
9
|
+
import { Domain } from '@things-factory/shell'
|
|
10
|
+
|
|
11
|
+
import { PackingWorksheetController } from '../../../../controllers/'
|
|
12
12
|
import { EcommerceController } from '../../../../controllers/ecommerce'
|
|
13
|
+
import { WorksheetController } from '../../../../controllers/worksheet-controller'
|
|
13
14
|
|
|
14
15
|
export const completePackingResolver = {
|
|
15
16
|
async completePacking(_: any, { releaseGoodNo }, context: any) {
|
|
@@ -20,6 +21,7 @@ export const completePackingResolver = {
|
|
|
20
21
|
where: { domain, name: releaseGoodNo },
|
|
21
22
|
relations: [
|
|
22
23
|
'bizplace',
|
|
24
|
+
'bizplace.domain',
|
|
23
25
|
'bizplace.company',
|
|
24
26
|
'bizplace.company.domain',
|
|
25
27
|
'orderInventories',
|
|
@@ -28,16 +30,27 @@ export const completePackingResolver = {
|
|
|
28
30
|
})
|
|
29
31
|
|
|
30
32
|
if (releaseGood.type === 'b2c') {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
relations: ['marketplaceOrderItems', 'marketplaceStore', 'marketplaceStore.marketplaceDistributors']
|
|
35
|
-
})
|
|
36
|
-
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
33
|
+
const sellercraft: Sellercraft = await tx
|
|
34
|
+
.getRepository(Sellercraft)
|
|
35
|
+
.findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
37
36
|
|
|
38
|
-
if (
|
|
39
|
-
const
|
|
40
|
-
await
|
|
37
|
+
if (!sellercraft) {
|
|
38
|
+
const companyDomain: Domain = releaseGood.bizplace.company.domain
|
|
39
|
+
const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
40
|
+
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
41
|
+
relations: [
|
|
42
|
+
'marketplaceOrderItems',
|
|
43
|
+
'marketplaceOrderItems.marketplaceOrderShipping',
|
|
44
|
+
'marketplaceStore',
|
|
45
|
+
'marketplaceStore.marketplaceDistributors'
|
|
46
|
+
]
|
|
47
|
+
})
|
|
48
|
+
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
49
|
+
|
|
50
|
+
if (marketplaceStore.isAutoUpdateShipment) {
|
|
51
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
52
|
+
await ecommerceCtrl.createOrderShip(releaseGood, marketplaceStore, marketplaceOrder, companyDomain)
|
|
53
|
+
}
|
|
41
54
|
}
|
|
42
55
|
}
|
|
43
56
|
|
|
@@ -59,37 +72,5 @@ export async function completePacking(
|
|
|
59
72
|
releaseGoodNo: string
|
|
60
73
|
): Promise<void> {
|
|
61
74
|
const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
62
|
-
const releaseGood: ReleaseGood = await packingWSCtrl.findRefOrder(ReleaseGood, {
|
|
63
|
-
domain,
|
|
64
|
-
name: releaseGoodNo
|
|
65
|
-
})
|
|
66
|
-
const worksheet: Worksheet = await packingWSCtrl.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PACKING, [
|
|
67
|
-
'worksheetDetails',
|
|
68
|
-
'worksheetDetails.targetInventory'
|
|
69
|
-
])
|
|
70
|
-
|
|
71
|
-
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
72
|
-
const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
73
|
-
const packedTargetInventories: OrderInventory[] = targetInventories
|
|
74
|
-
.filter(targetInventory => targetInventory.status === ORDER_INVENTORY_STATUS.PACKED)
|
|
75
|
-
.map((packedTargetInventory: OrderInventory) => {
|
|
76
|
-
return packedTargetInventory
|
|
77
|
-
})
|
|
78
|
-
|
|
79
75
|
await packingWSCtrl.completePacking(releaseGoodNo)
|
|
80
|
-
|
|
81
|
-
if (!releaseGood.courierOption) {
|
|
82
|
-
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
83
|
-
let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
|
|
84
|
-
releaseGoodNo,
|
|
85
|
-
packedTargetInventories
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
if (!loadingWorksheet.worksheetDetails?.length) {
|
|
89
|
-
loadingWorksheet = await packingWSCtrl.findWorksheetById(loadingWorksheet.id)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
|
|
93
|
-
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
|
|
94
|
-
}
|
|
95
76
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
|
+
import { ReleaseGood } from '@things-factory/sales-base'
|
|
2
6
|
import { Domain } from '@things-factory/shell'
|
|
3
|
-
|
|
4
|
-
import { PackingWorksheetController } from '../../../../controllers'
|
|
7
|
+
|
|
8
|
+
import { PackingWorksheetController, SellercraftController } from '../../../../controllers'
|
|
9
|
+
import { Worksheet } from '../../../../entities'
|
|
5
10
|
|
|
6
11
|
export const packingResolver = {
|
|
7
12
|
async packing(_: any, { worksheetDetailName, releaseQty }, context: any) {
|
|
@@ -18,5 +23,19 @@ export async function packing(
|
|
|
18
23
|
releaseQty: number
|
|
19
24
|
) {
|
|
20
25
|
const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
21
|
-
await worksheetController.packing(worksheetDetailName, releaseQty)
|
|
26
|
+
const worksheetDetail = await worksheetController.packing(worksheetDetailName, releaseQty)
|
|
27
|
+
|
|
28
|
+
let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
29
|
+
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
30
|
+
|
|
31
|
+
if (releaseGood.type === 'b2c' && !releaseGood?.airwayBill) {
|
|
32
|
+
const sellercraft: Sellercraft = await tx
|
|
33
|
+
.getRepository(Sellercraft)
|
|
34
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
35
|
+
|
|
36
|
+
if (sellercraft) {
|
|
37
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
38
|
+
await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
22
41
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
|
+
import { ReleaseGood } from '@things-factory/sales-base'
|
|
2
6
|
import { Domain } from '@things-factory/shell'
|
|
3
|
-
|
|
4
|
-
import { PackingWorksheetController } from '../../../../controllers'
|
|
7
|
+
|
|
8
|
+
import { PackingWorksheetController, SellercraftController } from '../../../../controllers'
|
|
9
|
+
import { Worksheet } from '../../../../entities'
|
|
5
10
|
|
|
6
11
|
export const scanProductPackingResolver = {
|
|
7
12
|
async scanProductPacking(_: any, { worksheetDetailName, productBarcode }, context: any) {
|
|
@@ -18,5 +23,19 @@ export async function scanProductPacking(
|
|
|
18
23
|
productBarcode: string
|
|
19
24
|
) {
|
|
20
25
|
const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
21
|
-
await worksheetController.scanProductPacking(worksheetDetailName, productBarcode)
|
|
26
|
+
const worksheetDetail = await worksheetController.scanProductPacking(worksheetDetailName, productBarcode)
|
|
27
|
+
|
|
28
|
+
let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
29
|
+
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
30
|
+
|
|
31
|
+
if (releaseGood.type === 'b2c' && !releaseGood?.airwayBill) {
|
|
32
|
+
const sellercraft: Sellercraft = await tx
|
|
33
|
+
.getRepository(Sellercraft)
|
|
34
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
35
|
+
|
|
36
|
+
if (sellercraft) {
|
|
37
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
38
|
+
await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
22
41
|
}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
|
+
import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
|
|
2
6
|
import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
3
7
|
import { Domain } from '@things-factory/shell'
|
|
4
8
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
5
|
-
|
|
9
|
+
|
|
6
10
|
import { WORKSHEET_TYPE } from '../../../constants'
|
|
11
|
+
import { SellercraftController } from '../../../controllers'
|
|
7
12
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
8
13
|
import { fetchExecutingWorksheet } from '../../../utils'
|
|
9
14
|
|
|
10
15
|
export const packingWorksheetResolver = {
|
|
11
16
|
async packingWorksheet(_: any, { releaseGoodNo }, context: any) {
|
|
12
|
-
const { domain }: { domain: Domain } = context.state
|
|
13
|
-
|
|
17
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
18
|
+
let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
14
19
|
where: {
|
|
15
20
|
domain,
|
|
16
21
|
name: releaseGoodNo
|
|
@@ -24,7 +29,9 @@ export const packingWorksheetResolver = {
|
|
|
24
29
|
releaseGood.bizplace,
|
|
25
30
|
[
|
|
26
31
|
'bizplace',
|
|
32
|
+
'bizplace.domain',
|
|
27
33
|
'releaseGood',
|
|
34
|
+
'releaseGood.domain',
|
|
28
35
|
'worksheetDetails',
|
|
29
36
|
'worksheetDetails.targetInventory',
|
|
30
37
|
'worksheetDetails.targetInventory.binLocation',
|
|
@@ -41,36 +48,80 @@ export const packingWorksheetResolver = {
|
|
|
41
48
|
let marketplaceOrderItems: MarketplaceOrderItem[] = []
|
|
42
49
|
let marketplaceStore
|
|
43
50
|
let trackingNo: string
|
|
51
|
+
let shippingProvider: string
|
|
52
|
+
let marketplaceStatus: string
|
|
44
53
|
|
|
45
54
|
if (releaseGood.type === 'b2c') {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
'domain',
|
|
50
|
-
'marketplaceStore',
|
|
51
|
-
'marketplaceOrderItems',
|
|
52
|
-
'marketplaceOrderItems.marketplaceOrderShipping'
|
|
53
|
-
]
|
|
55
|
+
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
56
|
+
domain: worksheet.bizplace.domain,
|
|
57
|
+
status: SellercraftStatus.ACTIVE
|
|
54
58
|
})
|
|
55
59
|
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
if (sellercraft) {
|
|
61
|
+
if (!releaseGood?.airwayBill) {
|
|
62
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
63
|
+
releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
64
|
+
}
|
|
65
|
+
trackingNo = releaseGood?.trackingNo
|
|
66
|
+
shippingProvider = releaseGood?.transporter
|
|
67
|
+
marketplaceStatus = releaseGood?.marketplaceOrderStatus
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (!sellercraft) {
|
|
71
|
+
marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
72
|
+
where: { orderNo: releaseGood.refNo },
|
|
73
|
+
relations: [
|
|
74
|
+
'domain',
|
|
75
|
+
'marketplaceStore',
|
|
76
|
+
'marketplaceOrderItems',
|
|
77
|
+
'marketplaceOrderItems.marketplaceOrderShipping'
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
if (!marketplaceOrder) {
|
|
82
|
+
throw new Error('Failed to retrieve ecommerce information, kindly contact our support team for this issue.')
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let marketplaceOrderShipping: MarketplaceOrderShipping
|
|
86
|
+
if (marketplaceOrder.isSplitted) {
|
|
87
|
+
marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
|
|
88
|
+
where: { subOrderNoRef: worksheet.releaseGood.refNo2 }
|
|
89
|
+
})
|
|
90
|
+
} else {
|
|
91
|
+
marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
|
|
92
|
+
where: { orderNoRef: worksheet.releaseGood.refNo }
|
|
93
|
+
})
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
trackingNo = marketplaceOrderShipping.ownTrackingNo
|
|
97
|
+
? marketplaceOrderShipping.ownTrackingNo
|
|
98
|
+
: marketplaceOrderShipping.trackingNo
|
|
99
|
+
shippingProvider = marketplaceOrderShipping.ownTransporter
|
|
100
|
+
? marketplaceOrderShipping.ownTransporter
|
|
101
|
+
: marketplaceOrderShipping.transporter
|
|
102
|
+
|
|
103
|
+
marketplaceOrderItems = marketplaceOrder.marketplaceOrderItems.filter(
|
|
104
|
+
item => item.marketplaceOrderShipping.id === marketplaceOrderShipping.id
|
|
105
|
+
)
|
|
106
|
+
marketplaceStore = marketplaceOrder?.marketplaceStore
|
|
107
|
+
marketplaceStatus = marketplaceOrder?.status
|
|
108
|
+
}
|
|
61
109
|
}
|
|
62
110
|
|
|
63
111
|
return {
|
|
64
112
|
worksheetInfo: {
|
|
65
113
|
bizplaceName: releaseGood.bizplace.name,
|
|
66
114
|
refNo: releaseGood.refNo,
|
|
115
|
+
refNo2: releaseGood.refNo2,
|
|
67
116
|
partnerDomainId: releaseGood.bizplace?.domain.id,
|
|
68
117
|
startedAt: worksheet.startedAt,
|
|
69
|
-
shippingProvider:
|
|
118
|
+
shippingProvider: shippingProvider ? shippingProvider : '',
|
|
70
119
|
trackingNo: trackingNo ? trackingNo : '',
|
|
71
|
-
|
|
120
|
+
airwayBill: releaseGood?.airwayBill,
|
|
121
|
+
invoice: releaseGood?.invoice,
|
|
122
|
+
platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
|
|
72
123
|
marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
|
|
73
|
-
marketplaceStatus:
|
|
124
|
+
marketplaceStatus: marketplaceStatus ? marketplaceStatus : '',
|
|
74
125
|
marketplaceOrder: marketplaceOrder ? marketplaceOrder : ''
|
|
75
126
|
},
|
|
76
127
|
worksheetDetailInfos: worksheet.worksheetDetails.map(async (packingWSD: WorksheetDetail) => {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
|
+
import { ReleaseGood } from '@things-factory/sales-base'
|
|
3
7
|
import { Domain } from '@things-factory/shell'
|
|
4
|
-
|
|
5
|
-
import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
|
|
8
|
+
|
|
9
|
+
import { EcommerceController, PickingWorksheetController, SellercraftController } from '../../../../controllers'
|
|
6
10
|
import { Worksheet } from '../../../../entities'
|
|
7
11
|
|
|
8
12
|
export const activateBatchPickingResolver = {
|
|
@@ -20,8 +24,34 @@ export async function activateBatchPicking(
|
|
|
20
24
|
): Promise<Worksheet> {
|
|
21
25
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
22
26
|
const worksheet = await worksheetController.activateBatchPicking(worksheetNo)
|
|
27
|
+
const worksheetDetails = worksheet.worksheetDetails
|
|
23
28
|
const companyDomain: Domain = worksheet?.bizplace.company.domain
|
|
24
29
|
|
|
30
|
+
const sellercraft: Sellercraft = await tx
|
|
31
|
+
.getRepository(Sellercraft)
|
|
32
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
33
|
+
|
|
34
|
+
if (sellercraft) {
|
|
35
|
+
const releaseGoods: ReleaseGood[] = worksheetDetails.map(
|
|
36
|
+
worksheetDetail => worksheetDetail.targetInventory && worksheetDetail.targetInventory.releaseGood
|
|
37
|
+
)
|
|
38
|
+
const uniqueReleaseGoods: ReleaseGood[] = []
|
|
39
|
+
const map = new Map()
|
|
40
|
+
for (const releaseGood of releaseGoods) {
|
|
41
|
+
if (!map.has(releaseGood.id)) {
|
|
42
|
+
map.set(releaseGood.id, true)
|
|
43
|
+
uniqueReleaseGoods.push({ ...releaseGood })
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
await Promise.all(
|
|
48
|
+
uniqueReleaseGoods.map(async releaseGood => {
|
|
49
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
50
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
51
|
+
})
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
25
55
|
// find for any existing marketplace store connections
|
|
26
56
|
const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
27
57
|
where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
|
|
@@ -29,7 +59,6 @@ export async function activateBatchPicking(
|
|
|
29
59
|
})
|
|
30
60
|
|
|
31
61
|
if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
32
|
-
const worksheetDetails = worksheet.worksheetDetails
|
|
33
62
|
let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
|
|
34
63
|
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
35
64
|
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
3
6
|
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
4
|
-
import {
|
|
7
|
+
import { ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
|
|
5
8
|
import { Domain } from '@things-factory/shell'
|
|
6
|
-
|
|
7
|
-
import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
|
|
9
|
+
|
|
10
|
+
import { EcommerceController, PickingWorksheetController, SellercraftController } from '../../../../controllers'
|
|
8
11
|
import { Worksheet } from '../../../../entities'
|
|
9
12
|
|
|
10
13
|
export const activatePickingResolver = {
|
|
@@ -30,25 +33,36 @@ export async function activatePicking(
|
|
|
30
33
|
relations: ['marketplaceDistributors']
|
|
31
34
|
})
|
|
32
35
|
|
|
33
|
-
|
|
36
|
+
let releaseGood: ReleaseGood = worksheet.releaseGood
|
|
34
37
|
|
|
35
38
|
if (releaseGood.type === 'b2c') {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const sellercraft: Sellercraft = await tx
|
|
40
|
+
.getRepository(Sellercraft)
|
|
41
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
42
|
+
|
|
43
|
+
if (sellercraft) {
|
|
44
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
45
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
if (marketplaceStores?.length && !sellercraft) {
|
|
49
|
+
if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
50
|
+
const worksheetDetails = worksheet.worksheetDetails
|
|
51
|
+
let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
|
|
52
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
53
|
+
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
57
|
+
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
58
|
+
relations: ['marketplaceStore']
|
|
59
|
+
})
|
|
60
|
+
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
48
61
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
62
|
+
if (marketplaceStore.isAutoUpdateShipment) {
|
|
63
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
64
|
+
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
|
|
65
|
+
}
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
|
|
@@ -7,11 +7,11 @@ import { WorksheetDetail } from '../../../../entities'
|
|
|
7
7
|
export const assignPickingInventoriesResolver = {
|
|
8
8
|
async assignPickingInventories(
|
|
9
9
|
_: any,
|
|
10
|
-
{ worksheetNo, batchId, productId, packingType, worksheetDetails },
|
|
10
|
+
{ worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },
|
|
11
11
|
context: any
|
|
12
12
|
): Promise<void> {
|
|
13
13
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
14
|
-
await assignPickingInventories(tx, domain, user, worksheetNo, batchId, productId, packingType, worksheetDetails)
|
|
14
|
+
await assignPickingInventories(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails)
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -23,8 +23,9 @@ export async function assignPickingInventories(
|
|
|
23
23
|
batchId: string,
|
|
24
24
|
productId: string,
|
|
25
25
|
packingType: string,
|
|
26
|
+
packingSize: number,
|
|
26
27
|
worksheetDetails: Partial<WorksheetDetail>[]
|
|
27
28
|
): Promise<void> {
|
|
28
29
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
29
|
-
await worksheetController.assignPickingInventories(worksheetNo, batchId, productId, packingType, worksheetDetails)
|
|
30
|
+
await worksheetController.assignPickingInventories(worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails)
|
|
30
31
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
|
|
3
|
-
import {
|
|
5
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
|
+
import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
4
7
|
import { Domain } from '@things-factory/shell'
|
|
5
|
-
|
|
6
|
-
import { WORKSHEET_TYPE } from '../../../../constants'
|
|
8
|
+
|
|
7
9
|
import {
|
|
8
10
|
PackingWorksheetController,
|
|
9
11
|
PickingWorksheetController,
|
|
12
|
+
SellercraftController,
|
|
10
13
|
SortingWorksheetController
|
|
11
14
|
} from '../../../../controllers/'
|
|
12
15
|
import { WorksheetController } from '../../../../controllers/worksheet-controller'
|
|
@@ -41,6 +44,31 @@ export async function completeBatchPicking(
|
|
|
41
44
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
42
45
|
const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
43
46
|
|
|
47
|
+
const sellercraft: Sellercraft = await tx
|
|
48
|
+
.getRepository(Sellercraft)
|
|
49
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
50
|
+
|
|
51
|
+
if (sellercraft) {
|
|
52
|
+
const releaseGoods: ReleaseGood[] = worksheetDetails.map(
|
|
53
|
+
worksheetDetail => worksheetDetail.targetInventory && worksheetDetail.targetInventory.releaseGood
|
|
54
|
+
)
|
|
55
|
+
const uniqueReleaseGoods: ReleaseGood[] = []
|
|
56
|
+
const map = new Map()
|
|
57
|
+
for (const releaseGood of releaseGoods) {
|
|
58
|
+
if (!map.has(releaseGood.id)) {
|
|
59
|
+
map.set(releaseGood.id, true)
|
|
60
|
+
uniqueReleaseGoods.push({ ...releaseGood })
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
await Promise.all(
|
|
65
|
+
uniqueReleaseGoods.map(async releaseGood => {
|
|
66
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
67
|
+
await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
|
|
68
|
+
})
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
44
72
|
const pickPackTargetInventories: OrderInventory[] = targetInventories
|
|
45
73
|
.filter(targetInventory => targetInventory.releaseGood.packingOption)
|
|
46
74
|
.map((pickPackTargetInventory: OrderInventory) => {
|