@things-factory/worksheet-base 4.3.242 → 4.3.244
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/index.js +0 -1
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +2 -2
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +3 -3
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +21 -0
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +10 -8
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +12 -9
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +6 -8
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/package.json +5 -5
- package/server/controllers/ecommerce/index.ts +0 -1
- package/server/controllers/outbound/packing-worksheet-controller.ts +5 -4
- package/server/controllers/outbound/picking-worksheet-controller.ts +14 -8
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +46 -13
- package/server/graphql/resolvers/worksheet/packing/packing.ts +4 -5
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +5 -4
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +5 -5
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +5 -5
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +10 -10
- package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +11 -11
- package/server/graphql/resolvers/worksheet/worksheet.ts +8 -10
- package/dist-server/controllers/ecommerce/powrup-controller.js +0 -201
- package/dist-server/controllers/ecommerce/powrup-controller.js.map +0 -1
- package/server/controllers/ecommerce/powrup-controller.ts +0 -272
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EntityManager, In } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import { User } from '@things-factory/auth-base'
|
|
3
|
+
import { Application, ApplicationType, User } from '@things-factory/auth-base'
|
|
4
4
|
import { logger } from '@things-factory/env'
|
|
5
5
|
import { Account, AccountingAPI } from '@things-factory/integration-accounting'
|
|
6
|
+
import { Powrup } from '@things-factory/integration-powrup'
|
|
6
7
|
import {
|
|
7
8
|
DeliveryOrder,
|
|
8
9
|
ORDER_INVENTORY_STATUS,
|
|
@@ -10,7 +11,8 @@ import {
|
|
|
10
11
|
ORDER_VAS_STATUS,
|
|
11
12
|
OrderInventory,
|
|
12
13
|
OrderVas,
|
|
13
|
-
ReleaseGood
|
|
14
|
+
ReleaseGood,
|
|
15
|
+
PowrupController
|
|
14
16
|
} from '@things-factory/sales-base'
|
|
15
17
|
import { Domain } from '@things-factory/shell'
|
|
16
18
|
import {
|
|
@@ -20,6 +22,7 @@ import {
|
|
|
20
22
|
INVENTORY_TRANSACTION_TYPE,
|
|
21
23
|
Location
|
|
22
24
|
} from '@things-factory/warehouse-base'
|
|
25
|
+
import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
|
|
23
26
|
|
|
24
27
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
25
28
|
import { LastMileAPI } from '@things-factory/integration-lmd'
|
|
@@ -36,6 +39,8 @@ export const confirmCancellationReleaseOrder = {
|
|
|
36
39
|
'orderInventories',
|
|
37
40
|
'orderInventories.inventory',
|
|
38
41
|
'orderInventories.inventory.location',
|
|
42
|
+
'orderInventories.product',
|
|
43
|
+
'orderInventories.productDetail',
|
|
39
44
|
'orderVass',
|
|
40
45
|
'lastMileDelivery',
|
|
41
46
|
'orderPackages'
|
|
@@ -239,21 +244,26 @@ export const confirmCancellationReleaseOrder = {
|
|
|
239
244
|
if (releaseGood?.lmdOption && releaseGood?.lastMileDelivery && releaseGood?.orderPackages) {
|
|
240
245
|
for (let op of releaseGood.orderPackages) {
|
|
241
246
|
if (op?.parcelId) {
|
|
242
|
-
let res = await LastMileAPI.deleteParcel(
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
247
|
+
let res = await LastMileAPI.deleteParcel(
|
|
248
|
+
{ ...releaseGood.lastMileDelivery, platform: 'lmdMiddleware' },
|
|
249
|
+
{
|
|
250
|
+
clientId: releaseGood.lastMileDelivery?.clientId,
|
|
251
|
+
clientPass: releaseGood.lastMileDelivery?.secretKey,
|
|
252
|
+
soldToAccountId: releaseGood.lastMileDelivery?.soldToAccountId,
|
|
253
|
+
pickupAccountId: releaseGood.lastMileDelivery?.pickupAccountId,
|
|
254
|
+
token: releaseGood.lastMileDelivery?.accessToken,
|
|
255
|
+
parcelId: op.parcelId,
|
|
256
|
+
warehouse: domain?.name,
|
|
257
|
+
staging: releaseGood.lastMileDelivery?.staging
|
|
258
|
+
}
|
|
259
|
+
)
|
|
260
|
+
if (!res?.status) throw new Error('cannot cancel consignment note')
|
|
253
261
|
}
|
|
254
262
|
}
|
|
255
263
|
}
|
|
256
264
|
|
|
265
|
+
await updateStockForOrderInventories(targetOIs, releaseGood, domain, user, tx)
|
|
266
|
+
|
|
257
267
|
return
|
|
258
268
|
}
|
|
259
269
|
}
|
|
@@ -272,3 +282,26 @@ function _filterOrderInventoriesByStatus(orderInventories: OrderInventory[], sta
|
|
|
272
282
|
return acc
|
|
273
283
|
}, [])
|
|
274
284
|
}
|
|
285
|
+
|
|
286
|
+
async function updateStockForOrderInventories(
|
|
287
|
+
orderInventories: OrderInventory[],
|
|
288
|
+
releaseGood: ReleaseGood,
|
|
289
|
+
domain: Domain,
|
|
290
|
+
user: User,
|
|
291
|
+
tx: EntityManager
|
|
292
|
+
) {
|
|
293
|
+
const orderSource: string = releaseGood.source
|
|
294
|
+
if (orderSource == ApplicationType.POWRUP) {
|
|
295
|
+
const customerBizplaceId: string = releaseGood.bizplace.id
|
|
296
|
+
const companyBizplace: Bizplace = await getCompanyBizplace(domain, null, customerBizplaceId, tx)
|
|
297
|
+
const application: Application = await tx.getRepository(Application).findOne({
|
|
298
|
+
domain: companyBizplace.domain,
|
|
299
|
+
status: 'ACTIVE',
|
|
300
|
+
type: ApplicationType.POWRUP
|
|
301
|
+
})
|
|
302
|
+
if (application) {
|
|
303
|
+
const powrupController: PowrupController = new PowrupController()
|
|
304
|
+
await powrupController.updateStock(orderInventories, companyBizplace.domain, user, tx)
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
@@ -3,11 +3,10 @@ import { EntityManager } from 'typeorm'
|
|
|
3
3
|
import { ApplicationType, User } from '@things-factory/auth-base'
|
|
4
4
|
import { Powrup } from '@things-factory/integration-powrup'
|
|
5
5
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
|
-
import { ReleaseGood } from '@things-factory/sales-base'
|
|
6
|
+
import { ReleaseGood, PowrupController } from '@things-factory/sales-base'
|
|
7
7
|
import { Domain } from '@things-factory/shell'
|
|
8
|
-
// import { PowrupController } from '@things-factory/warehouse-base'
|
|
9
8
|
|
|
10
|
-
import { PackingWorksheetController, SellercraftController
|
|
9
|
+
import { PackingWorksheetController, SellercraftController } from '../../../../controllers'
|
|
11
10
|
|
|
12
11
|
export const packingResolver = {
|
|
13
12
|
async packing(_: any, { orderPackageItemId, releaseQty, serialNumber }, context: any) {
|
|
@@ -46,8 +45,8 @@ export async function packing(
|
|
|
46
45
|
const powrup: Powrup = await tx.getRepository(Powrup).findOne({ active: true, platform: 'POWRUP' })
|
|
47
46
|
|
|
48
47
|
if (powrup) {
|
|
49
|
-
const powrupCtrl: PowrupController = new PowrupController(
|
|
50
|
-
await powrupCtrl.fetchDocument(powrup, releaseGood)
|
|
48
|
+
const powrupCtrl: PowrupController = new PowrupController()
|
|
49
|
+
await powrupCtrl.fetchDocument(powrup, releaseGood, tx, domain, user)
|
|
51
50
|
}
|
|
52
51
|
break
|
|
53
52
|
|
|
@@ -16,14 +16,15 @@ import {
|
|
|
16
16
|
OrderInventory,
|
|
17
17
|
OrderPackage,
|
|
18
18
|
OrderProduct,
|
|
19
|
-
ReleaseGood
|
|
19
|
+
ReleaseGood,
|
|
20
|
+
PowrupController
|
|
20
21
|
} from '@things-factory/sales-base'
|
|
21
22
|
import { PartnerSetting, Setting } from '@things-factory/setting-base'
|
|
22
23
|
import { Domain } from '@things-factory/shell'
|
|
23
24
|
import { Location } from '@things-factory/warehouse-base'
|
|
24
25
|
|
|
25
26
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
26
|
-
import { PackingWorksheetController, SellercraftController
|
|
27
|
+
import { PackingWorksheetController, SellercraftController } from '../../../controllers'
|
|
27
28
|
import { Worksheet } from '../../../entities'
|
|
28
29
|
|
|
29
30
|
export const packingWorksheetResolver = {
|
|
@@ -413,12 +414,12 @@ async function getSellercraftDocument(sellercraft: Sellercraft, releaseGood: Rel
|
|
|
413
414
|
//trigger RTS, init document, and fetch powrup document in separated transaction
|
|
414
415
|
async function getPowrupDocument(powrup: Powrup, releaseGood: ReleaseGood, domain: Domain, user: User) {
|
|
415
416
|
await getManager().transaction(async txMgr => {
|
|
416
|
-
const powrupCtrl: PowrupController = new PowrupController(
|
|
417
|
+
const powrupCtrl: PowrupController = new PowrupController()
|
|
417
418
|
try {
|
|
418
419
|
if (!releaseGood?.airwayBill) {
|
|
419
420
|
try {
|
|
420
421
|
// try fetch order document / AWB
|
|
421
|
-
releaseGood = await powrupCtrl.fetchDocument(powrup, releaseGood)
|
|
422
|
+
releaseGood = await powrupCtrl.fetchDocument(powrup, releaseGood, domain, user, txMgr)
|
|
422
423
|
} catch (error) {
|
|
423
424
|
try {
|
|
424
425
|
// retry initiate order shipment / RTS
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
OrderNoGenerator,
|
|
16
16
|
OrderPackage,
|
|
17
17
|
OrderPackageItem,
|
|
18
|
-
ReleaseGood
|
|
18
|
+
ReleaseGood,
|
|
19
|
+
PowrupController
|
|
19
20
|
} from '@things-factory/sales-base'
|
|
20
21
|
import { Setting } from '@things-factory/setting-base'
|
|
21
22
|
import { Domain } from '@things-factory/shell'
|
|
@@ -25,8 +26,7 @@ import {
|
|
|
25
26
|
PackingWorksheetController,
|
|
26
27
|
PickingWorksheetController,
|
|
27
28
|
SellercraftController,
|
|
28
|
-
SortingWorksheetController
|
|
29
|
-
PowrupController
|
|
29
|
+
SortingWorksheetController
|
|
30
30
|
} from '../../../../controllers/'
|
|
31
31
|
import { EcommerceController } from '../../../../controllers/ecommerce'
|
|
32
32
|
import { WorksheetController } from '../../../../controllers/worksheet-controller'
|
|
@@ -139,7 +139,7 @@ export async function completeBatchPicking(
|
|
|
139
139
|
if (powrup) {
|
|
140
140
|
const initPowrupShipment = async (powrup: Powrup, foundReleaseGood: ReleaseGood) => {
|
|
141
141
|
await getManager().transaction(async txMgr => {
|
|
142
|
-
const powrupCtrl: PowrupController = new PowrupController(
|
|
142
|
+
const powrupCtrl: PowrupController = new PowrupController()
|
|
143
143
|
|
|
144
144
|
if (!foundReleaseGood?.orderPackages?.length && !foundReleaseGood?.marketPackCallSuccess) {
|
|
145
145
|
await powrupCtrl.packOrder(powrup, foundReleaseGood)
|
|
@@ -150,7 +150,7 @@ export async function completeBatchPicking(
|
|
|
150
150
|
})
|
|
151
151
|
|
|
152
152
|
if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
|
|
153
|
-
await powrupCtrl.initiateShipment(powrup, foundReleaseGood)
|
|
153
|
+
await powrupCtrl.initiateShipment(powrup, foundReleaseGood, domain, user, tx)
|
|
154
154
|
}
|
|
155
155
|
})
|
|
156
156
|
}
|
|
@@ -25,7 +25,8 @@ import {
|
|
|
25
25
|
OrderProduct,
|
|
26
26
|
OrderVas,
|
|
27
27
|
ReleaseGood,
|
|
28
|
-
Replenishment
|
|
28
|
+
Replenishment,
|
|
29
|
+
PowrupController
|
|
29
30
|
} from '@things-factory/sales-base'
|
|
30
31
|
import { Setting } from '@things-factory/setting-base'
|
|
31
32
|
import { Domain } from '@things-factory/shell'
|
|
@@ -37,8 +38,7 @@ import {
|
|
|
37
38
|
PackingWorksheetController,
|
|
38
39
|
PickingWorksheetController,
|
|
39
40
|
ReplenishmentWorksheetController,
|
|
40
|
-
SellercraftController
|
|
41
|
-
PowrupController
|
|
41
|
+
SellercraftController
|
|
42
42
|
} from '../../../../controllers/'
|
|
43
43
|
import { EcommerceController } from '../../../../controllers/ecommerce'
|
|
44
44
|
import { WorksheetController } from '../../../../controllers/worksheet-controller'
|
|
@@ -163,14 +163,14 @@ export async function completePicking(
|
|
|
163
163
|
if (powrup) {
|
|
164
164
|
const initPowrupShipment = async powrup => {
|
|
165
165
|
await getManager().transaction(async txMgr => {
|
|
166
|
-
const powrupController: PowrupController = new PowrupController(
|
|
166
|
+
const powrupController: PowrupController = new PowrupController()
|
|
167
167
|
|
|
168
168
|
if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess) {
|
|
169
169
|
const orderProducts: OrderProduct[] = await txMgr.getRepository(OrderProduct).find({
|
|
170
170
|
where: { releaseGood },
|
|
171
171
|
relations: ['product', 'productDetail']
|
|
172
172
|
})
|
|
173
|
-
await powrupController.packOrder(powrup, { ...releaseGood, orderProducts })
|
|
173
|
+
await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user, tx)
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
const rtsTriggerLevel: Setting = await txMgr.getRepository(Setting).findOne({
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { EntityManager } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import { Application, User } from '@things-factory/auth-base'
|
|
3
|
+
import { Application, ApplicationType, User } from '@things-factory/auth-base'
|
|
4
4
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
5
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
6
|
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
7
7
|
import { Domain } from '@things-factory/shell'
|
|
8
|
-
|
|
8
|
+
import { PowrupController } from '@things-factory/sales-base'
|
|
9
9
|
import { Powrup } from '@things-factory/integration-powrup'
|
|
10
10
|
import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
|
|
11
11
|
|
|
@@ -78,9 +78,9 @@ export const completePutawayResolver = {
|
|
|
78
78
|
.getRepository(Sellercraft)
|
|
79
79
|
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
const application: Application = await tx
|
|
82
|
+
.getRepository(Application)
|
|
83
|
+
.findOne({ domain: companyBizplace.domain, status: 'ACTIVE', type: ApplicationType.POWRUP })
|
|
84
84
|
|
|
85
85
|
if (sellercraft) {
|
|
86
86
|
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
@@ -96,12 +96,12 @@ export const completePutawayResolver = {
|
|
|
96
96
|
ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
if (application) {
|
|
100
|
+
const powrupController: PowrupController = new PowrupController()
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
// allow async run to skip user wait time
|
|
103
|
+
powrupController.updateStock(arrivalNotice.orderProducts, companyBizplace.domain, user, tx)
|
|
104
|
+
}
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EntityManager } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import { Application, User } from '@things-factory/auth-base'
|
|
3
|
+
import { Application, ApplicationType, User } from '@things-factory/auth-base'
|
|
4
4
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
5
|
import { ReturnOrder } from '@things-factory/sales-base'
|
|
6
6
|
import { Domain } from '@things-factory/shell'
|
|
7
|
-
|
|
7
|
+
import { PowrupController } from '@things-factory/sales-base'
|
|
8
8
|
import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
|
|
9
9
|
import { Powrup } from '@things-factory/integration-powrup'
|
|
10
10
|
|
|
@@ -35,21 +35,21 @@ export const completePutawayReturnResolver = {
|
|
|
35
35
|
.getRepository(Sellercraft)
|
|
36
36
|
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
const customerBizplaceId: string = returnOrder.bizplace.id
|
|
39
|
+
const companyBizplace: Bizplace = await getCompanyBizplace(domain, null, customerBizplaceId, tx)
|
|
40
|
+
const application: Application = await tx
|
|
41
|
+
.getRepository(Application)
|
|
42
|
+
.findOne({ domain: companyBizplace.domain, status: 'ACTIVE', type: ApplicationType.POWRUP })
|
|
43
43
|
|
|
44
44
|
if (sellercraft) {
|
|
45
45
|
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
46
46
|
await sellercraftCtrl.registerProductReturn(sellercraft, returnOrder)
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
if (application) {
|
|
50
|
+
const powrupController: PowrupController = new PowrupController()
|
|
51
|
+
await powrupController.updateStock(returnOrder.orderInventories, companyBizplace.domain, user, tx)
|
|
52
|
+
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -261,16 +261,14 @@ export const worksheetResolver = {
|
|
|
261
261
|
})
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
//
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
})
|
|
273
|
-
}
|
|
264
|
+
// before VAS
|
|
265
|
+
if (worksheet.orderInventories) {
|
|
266
|
+
worksheet.worksheetDetails.sort(function (a, b) {
|
|
267
|
+
return (
|
|
268
|
+
worksheet.orderInventories.map(oi => oi.id).indexOf(a.targetInventory.id) -
|
|
269
|
+
worksheet.orderInventories.map(oi => oi.id).indexOf(b.targetInventory.id)
|
|
270
|
+
)
|
|
271
|
+
})
|
|
274
272
|
}
|
|
275
273
|
|
|
276
274
|
if (worksheet?.returnOrder?.id) {
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PowrupController = void 0;
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
|
-
const env_1 = require("@things-factory/env");
|
|
7
|
-
const integration_powrup_1 = require("@things-factory/integration-powrup");
|
|
8
|
-
const sales_base_1 = require("@things-factory/sales-base");
|
|
9
|
-
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
10
|
-
const datetime_util_1 = require("../../utils/datetime-util");
|
|
11
|
-
const worksheet_controller_1 = require("../worksheet-controller");
|
|
12
|
-
class PowrupController extends worksheet_controller_1.WorksheetController {
|
|
13
|
-
async packOrder(powrup, releaseGood) {
|
|
14
|
-
try {
|
|
15
|
-
const orderProducts = releaseGood.orderProducts;
|
|
16
|
-
const orderInformation = {
|
|
17
|
-
refOrderId: releaseGood.refOrderId
|
|
18
|
-
};
|
|
19
|
-
if ((releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lastMarketPackCall) &&
|
|
20
|
-
datetime_util_1.DateTimeDifference.timeDifferenceInSeconds(releaseGood.lastMarketPackCall, new Date()) <= 5) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).update({ id: releaseGood.id }, {
|
|
24
|
-
lastMarketPackCall: new Date()
|
|
25
|
-
});
|
|
26
|
-
const orderPack = await integration_powrup_1.PowrupAPI.packOrder(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
|
|
27
|
-
if (orderPack === null || orderPack === void 0 ? void 0 : orderPack.packages) {
|
|
28
|
-
const packages = orderPack.packages;
|
|
29
|
-
await Promise.all(packages.map(async (pkg) => {
|
|
30
|
-
const items = pkg.items;
|
|
31
|
-
const orderPackage = {
|
|
32
|
-
name: sales_base_1.OrderNoGenerator.orderPackage(),
|
|
33
|
-
packageId: pkg.packageId,
|
|
34
|
-
status: sales_base_1.ORDER_STATUS.PROCESSING,
|
|
35
|
-
releaseGood,
|
|
36
|
-
domain: releaseGood.domain,
|
|
37
|
-
bizplace: releaseGood.bizplace,
|
|
38
|
-
creator: releaseGood.creator,
|
|
39
|
-
updater: releaseGood.updater
|
|
40
|
-
};
|
|
41
|
-
let savedOrderPackage = await this.trxMgr.getRepository(sales_base_1.OrderPackage).save(orderPackage);
|
|
42
|
-
const orderPackageItems = items.map(itm => {
|
|
43
|
-
const { refCode, qty } = itm;
|
|
44
|
-
const matchedOrderProduct = orderProducts.find(op => op.productDetail.refCode == refCode);
|
|
45
|
-
return {
|
|
46
|
-
name: sales_base_1.OrderNoGenerator.orderPackageItem(),
|
|
47
|
-
orderProduct: matchedOrderProduct,
|
|
48
|
-
status: sales_base_1.ORDER_STATUS.PROCESSING,
|
|
49
|
-
releaseQty: qty,
|
|
50
|
-
orderPackage: savedOrderPackage,
|
|
51
|
-
domain: releaseGood.domain,
|
|
52
|
-
bizplace: releaseGood.bizplace,
|
|
53
|
-
creator: releaseGood.creator,
|
|
54
|
-
updater: releaseGood.updater
|
|
55
|
-
};
|
|
56
|
-
});
|
|
57
|
-
await this.trxMgr.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
|
|
58
|
-
}));
|
|
59
|
-
await this.trxMgr.getRepository(sales_base_1.ReleaseGood).update({ id: releaseGood.id }, {
|
|
60
|
-
packageId: packages[0].packageId,
|
|
61
|
-
marketPackCallSuccess: new Date(),
|
|
62
|
-
lastMarketPackCall: new Date(),
|
|
63
|
-
updatedAt: new Date()
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
env_1.logger.error(`powrup-controller[packOrder]: ${error}`);
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
return releaseGood;
|
|
72
|
-
}
|
|
73
|
-
async updateStock(powrup, inventory) {
|
|
74
|
-
const bizplace = await this.trxMgr.getRepository(biz_base_1.Bizplace).findOne({ domain: powrup.domain });
|
|
75
|
-
let product = inventory.product;
|
|
76
|
-
const productDetail = inventory.productDetail;
|
|
77
|
-
let qb = await this.trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('inv');
|
|
78
|
-
qb.leftJoinAndSelect('inv.location', 'loc')
|
|
79
|
-
.andWhere('"inv"."domain_id" = :domainId')
|
|
80
|
-
.andWhere('"inv"."bizplace_id" = :bizplaceId')
|
|
81
|
-
.andWhere('"inv"."product_id" = :productId')
|
|
82
|
-
.andWhere('"inv"."product_detail_id" = :productDetailId')
|
|
83
|
-
.andWhere('"inv"."status" = :status')
|
|
84
|
-
.andWhere('"loc"."type" NOT IN (:...locationTypes)')
|
|
85
|
-
.setParameters({
|
|
86
|
-
domainId: this.domain.id,
|
|
87
|
-
bizplaceId: bizplace.id,
|
|
88
|
-
productId: product.id,
|
|
89
|
-
productDetailId: productDetail.id,
|
|
90
|
-
status: warehouse_base_1.INVENTORY_STATUS.STORED,
|
|
91
|
-
locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE]
|
|
92
|
-
});
|
|
93
|
-
const warehouseDomainId = this.domain.id;
|
|
94
|
-
let inventories = await qb.getMany();
|
|
95
|
-
let inventoryTotalQty = 0;
|
|
96
|
-
let inventoryTotalLockedQty = 0;
|
|
97
|
-
let inventoryBufferQty = 0;
|
|
98
|
-
inventories.forEach((inventory) => {
|
|
99
|
-
const { qty, lockedQty } = inventory;
|
|
100
|
-
inventoryTotalQty += qty;
|
|
101
|
-
inventoryTotalLockedQty += lockedQty;
|
|
102
|
-
if (inventory.location.type === warehouse_base_1.LOCATION_TYPE.RESERVE) {
|
|
103
|
-
inventoryBufferQty += qty;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
const powrupInvs = [
|
|
107
|
-
{
|
|
108
|
-
refCode: productDetail.refCode,
|
|
109
|
-
stock: {
|
|
110
|
-
quantityTotal: inventoryTotalQty - inventoryTotalLockedQty - inventoryBufferQty,
|
|
111
|
-
quantityReserved: inventoryTotalLockedQty - inventoryBufferQty,
|
|
112
|
-
quantityBuffer: inventoryBufferQty
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
];
|
|
116
|
-
await integration_powrup_1.PowrupAPI.updateStock(powrup, {
|
|
117
|
-
context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
|
|
118
|
-
warehouseDomainId,
|
|
119
|
-
powrupInvs
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
async initiateShipment(powrup, releaseGood) {
|
|
123
|
-
try {
|
|
124
|
-
let orderPackages = await this.trxMgr
|
|
125
|
-
.getRepository(sales_base_1.OrderPackage)
|
|
126
|
-
.find({ where: { releaseGood, bizplace: releaseGood.bizplace } });
|
|
127
|
-
if (orderPackages === null || orderPackages === void 0 ? void 0 : orderPackages.length) {
|
|
128
|
-
await Promise.all(orderPackages
|
|
129
|
-
.filter(op => (op === null || op === void 0 ? void 0 : op.marketRtsCallSuccess) == undefined)
|
|
130
|
-
.map(async (op) => {
|
|
131
|
-
if (!(op === null || op === void 0 ? void 0 : op.packageId))
|
|
132
|
-
throw new Error('Order package id is not found');
|
|
133
|
-
if (releaseGood.lmdOption && !(op === null || op === void 0 ? void 0 : op.parcelId))
|
|
134
|
-
return;
|
|
135
|
-
let orderInformation = {
|
|
136
|
-
refOrderId: releaseGood.refOrderId,
|
|
137
|
-
packageId: op.packageId
|
|
138
|
-
};
|
|
139
|
-
if (releaseGood.lmdOption) {
|
|
140
|
-
let releaseGoodQuery = await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).findOne({
|
|
141
|
-
where: { id: releaseGood.id },
|
|
142
|
-
relations: ['lastMileDelivery']
|
|
143
|
-
});
|
|
144
|
-
orderInformation = Object.assign(Object.assign({}, orderInformation), { awb: op.airwayBill, trackingNo: op.trackingNo, lmdOption: releaseGood.lmdOption, shipperName: releaseGoodQuery.lastMileDelivery.platform });
|
|
145
|
-
}
|
|
146
|
-
try {
|
|
147
|
-
await integration_powrup_1.PowrupAPI.initiateShipment(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
|
|
148
|
-
await (0, typeorm_1.getRepository)(sales_base_1.OrderPackage).update({ id: op.id }, { marketRtsCallSuccess: new Date() });
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
env_1.logger.error(`powrup-controller[initiateShipment]: ${JSON.stringify(Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } }, error: error }))}`);
|
|
152
|
-
}
|
|
153
|
-
}));
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
throw error;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async fetchDocument(powrup, releaseGood) {
|
|
161
|
-
if ((releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.ownTransport) && (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lmdOption)) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
try {
|
|
165
|
-
let orderPackages = await this.trxMgr
|
|
166
|
-
.getRepository(sales_base_1.OrderPackage)
|
|
167
|
-
.find({ where: { releaseGood, bizplace: releaseGood.bizplace } });
|
|
168
|
-
if (orderPackages === null || orderPackages === void 0 ? void 0 : orderPackages.length) {
|
|
169
|
-
await Promise.all(orderPackages.map(async (op) => {
|
|
170
|
-
if (!(op === null || op === void 0 ? void 0 : op.packageId))
|
|
171
|
-
throw new Error('Order package id is not found');
|
|
172
|
-
const orderInformation = {
|
|
173
|
-
refOrderId: releaseGood.refOrderId,
|
|
174
|
-
packageId: op.packageId
|
|
175
|
-
};
|
|
176
|
-
const { documents, trackingNo, transporter } = await integration_powrup_1.PowrupAPI.fetchDocument(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
|
|
177
|
-
let updateInfo;
|
|
178
|
-
if (documents === null || documents === void 0 ? void 0 : documents.length) {
|
|
179
|
-
documents.map(document => {
|
|
180
|
-
if (document.type === 'invoice') {
|
|
181
|
-
updateInfo = Object.assign(Object.assign({}, updateInfo), { invoice: document.download_url });
|
|
182
|
-
}
|
|
183
|
-
else if (document.type === 'airway_bill') {
|
|
184
|
-
updateInfo = Object.assign(Object.assign({}, updateInfo), { airwayBill: document.download_url });
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
updateInfo = Object.assign(Object.assign({}, updateInfo), { trackingNo: trackingNo, transporter: transporter, updater: this.user });
|
|
188
|
-
await this.trxMgr.getRepository(sales_base_1.OrderPackage).update({ id: op.id }, Object.assign({}, updateInfo));
|
|
189
|
-
}
|
|
190
|
-
}));
|
|
191
|
-
releaseGood = await this.trxMgr.getRepository(sales_base_1.ReleaseGood).findOne({ id: releaseGood.id });
|
|
192
|
-
}
|
|
193
|
-
return releaseGood;
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
throw error;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
exports.PowrupController = PowrupController;
|
|
201
|
-
//# sourceMappingURL=powrup-controller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"powrup-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/powrup-controller.ts"],"names":[],"mappings":"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"}
|