@things-factory/worksheet-base 4.3.66 → 4.3.69
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/constants/index.js +5 -1
- package/dist-server/constants/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +5 -1
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +31 -25
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/index.js +5 -1
- package/dist-server/controllers/inbound/index.js.map +1 -1
- package/dist-server/controllers/index.js +5 -1
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/inspect/index.js +5 -1
- package/dist-server/controllers/inspect/index.js.map +1 -1
- package/dist-server/controllers/outbound/index.js +5 -1
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/vas/index.js +5 -1
- package/dist-server/controllers/vas/index.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +7 -5
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/index.js +5 -1
- package/dist-server/graphql/index.js.map +1 -1
- package/dist-server/graphql/resolvers/index.js +5 -1
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +57 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/index.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +16 -11
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +38 -8
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +7 -5
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +20 -17
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +7 -5
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js.map +1 -1
- package/dist-server/graphql/types/index.js +5 -1
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +5 -5
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/sellercraft-document.js +11 -0
- package/dist-server/graphql/types/worksheet/sellercraft-document.js.map +1 -0
- package/dist-server/index.js +5 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/utils/index.js +5 -1
- package/dist-server/utils/index.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/ecommerce/sellercraft-controller.ts +42 -29
- package/server/controllers/worksheet-controller.ts +9 -4
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +62 -0
- package/server/graphql/resolvers/worksheet/index.ts +2 -2
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +23 -18
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +36 -9
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +8 -4
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +23 -19
- package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +8 -4
- package/server/graphql/types/worksheet/index.ts +5 -5
- package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +0 -25
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +0 -1
- package/dist-server/graphql/types/worksheet/airwaybill.js +0 -10
- package/dist-server/graphql/types/worksheet/airwaybill.js.map +0 -1
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +0 -30
- package/server/graphql/types/worksheet/airwaybill.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,2DAAwC;AACxC,kDAA+B;AAC/B,mDAAgC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/worksheet-base",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.69",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/auth-base": "^4.3.
|
|
28
|
-
"@things-factory/biz-base": "^4.3.
|
|
29
|
-
"@things-factory/document-template-base": "^4.3.
|
|
30
|
-
"@things-factory/id-rule-base": "^4.3.
|
|
31
|
-
"@things-factory/integration-lmd": "^4.3.
|
|
32
|
-
"@things-factory/integration-marketplace": "^4.3.
|
|
33
|
-
"@things-factory/integration-sellercraft": "^4.3.
|
|
34
|
-
"@things-factory/integration-sftp": "^4.3.
|
|
35
|
-
"@things-factory/marketplace-base": "^4.3.
|
|
36
|
-
"@things-factory/notification": "^4.3.
|
|
37
|
-
"@things-factory/sales-base": "^4.3.
|
|
38
|
-
"@things-factory/setting-base": "^4.3.
|
|
39
|
-
"@things-factory/shell": "^4.3.
|
|
40
|
-
"@things-factory/transport-base": "^4.3.
|
|
41
|
-
"@things-factory/warehouse-base": "^4.3.
|
|
27
|
+
"@things-factory/auth-base": "^4.3.69",
|
|
28
|
+
"@things-factory/biz-base": "^4.3.69",
|
|
29
|
+
"@things-factory/document-template-base": "^4.3.69",
|
|
30
|
+
"@things-factory/id-rule-base": "^4.3.69",
|
|
31
|
+
"@things-factory/integration-lmd": "^4.3.69",
|
|
32
|
+
"@things-factory/integration-marketplace": "^4.3.69",
|
|
33
|
+
"@things-factory/integration-sellercraft": "^4.3.69",
|
|
34
|
+
"@things-factory/integration-sftp": "^4.3.69",
|
|
35
|
+
"@things-factory/marketplace-base": "^4.3.69",
|
|
36
|
+
"@things-factory/notification": "^4.3.69",
|
|
37
|
+
"@things-factory/sales-base": "^4.3.69",
|
|
38
|
+
"@things-factory/setting-base": "^4.3.69",
|
|
39
|
+
"@things-factory/shell": "^4.3.69",
|
|
40
|
+
"@things-factory/transport-base": "^4.3.69",
|
|
41
|
+
"@things-factory/warehouse-base": "^4.3.69"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "f1bc559c1d5f98b6a88848dd5c66c1588207978c"
|
|
44
44
|
}
|
|
@@ -276,7 +276,7 @@ export class SellercraftController extends WorksheetController {
|
|
|
276
276
|
packageId: releaseGood.packageId
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
SellercraftAPI.initiateOrderShipment(sellercraft, {
|
|
279
|
+
await SellercraftAPI.initiateOrderShipment(sellercraft, {
|
|
280
280
|
...orderInformation,
|
|
281
281
|
context: { state: { domain: this?.domain, user: this?.user } }
|
|
282
282
|
})
|
|
@@ -296,7 +296,7 @@ export class SellercraftController extends WorksheetController {
|
|
|
296
296
|
orderId: releaseGood.refNo2,
|
|
297
297
|
packageId: releaseGood.packageId
|
|
298
298
|
}
|
|
299
|
-
SellercraftAPI.initiateOrderDocument(sellercraft, {
|
|
299
|
+
await SellercraftAPI.initiateOrderDocument(sellercraft, {
|
|
300
300
|
...orderInformation,
|
|
301
301
|
context: { state: { domain: this?.domain, user: this?.user } }
|
|
302
302
|
})
|
|
@@ -304,38 +304,51 @@ export class SellercraftController extends WorksheetController {
|
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
async fetchOrderDocument(sellercraft: Sellercraft, releaseGood: ReleaseGood): Promise<ReleaseGood> {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
307
|
+
try {
|
|
308
|
+
let sellercraftSetting: any = sellercraft.sellercraftSetting
|
|
309
|
+
let disableFetchOrderDocument: boolean =
|
|
310
|
+
sellercraftSetting?.disableFetchOrderDocument && sellercraftSetting?.disableFetchOrderDocument == 1 ? true : false
|
|
311
|
+
|
|
312
|
+
if (!disableFetchOrderDocument) {
|
|
313
|
+
const orderInformation: any = {
|
|
314
|
+
accountId: sellercraft.accountId,
|
|
315
|
+
orderId: releaseGood.refNo2,
|
|
316
|
+
packageId: releaseGood.packageId
|
|
317
|
+
}
|
|
318
|
+
const { documents, trackingNo, transporter }: { documents: any[]; trackingNo: string; transporter: string } =
|
|
319
|
+
await SellercraftAPI.fetchOrderDocument(sellercraft, {
|
|
320
|
+
...orderInformation,
|
|
321
|
+
context: { state: { domain: this?.domain, user: this?.user } }
|
|
322
|
+
})
|
|
310
323
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
context: { state: { domain: this?.domain, user: this?.user } }
|
|
321
|
-
})
|
|
324
|
+
let updateInfo: any
|
|
325
|
+
if (documents?.length) {
|
|
326
|
+
documents.map(document => {
|
|
327
|
+
if (document.type === 'invoice') {
|
|
328
|
+
updateInfo = { ...updateInfo, invoice: document.download_url }
|
|
329
|
+
} else if (document.type === 'airway_bill') {
|
|
330
|
+
updateInfo = { ...updateInfo, airwayBill: document.download_url }
|
|
331
|
+
}
|
|
332
|
+
})
|
|
322
333
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
releaseGood.airwayBill = document.download_url
|
|
334
|
+
updateInfo = {
|
|
335
|
+
...updateInfo,
|
|
336
|
+
trackingNo: trackingNo,
|
|
337
|
+
transporter: transporter,
|
|
338
|
+
updater: this.user
|
|
329
339
|
}
|
|
330
|
-
})
|
|
331
340
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
341
|
+
// releaseGood = await this.trxMgr.getRepository(ReleaseGood).save(releaseGood)
|
|
342
|
+
|
|
343
|
+
await this.trxMgr.getRepository(ReleaseGood).update({ id: releaseGood.id }, { ...updateInfo })
|
|
344
|
+
releaseGood = await this.trxMgr.getRepository(ReleaseGood).findOne({ id: releaseGood.id })
|
|
345
|
+
}
|
|
336
346
|
}
|
|
337
|
-
}
|
|
338
347
|
|
|
339
|
-
|
|
348
|
+
return releaseGood
|
|
349
|
+
|
|
350
|
+
} catch (error) {
|
|
351
|
+
throw error
|
|
352
|
+
}
|
|
340
353
|
}
|
|
341
354
|
}
|
|
@@ -821,10 +821,15 @@ export class WorksheetController {
|
|
|
821
821
|
*/
|
|
822
822
|
async notifyToUsers(users: User[], message: NotificationMsgInterface): Promise<void> {
|
|
823
823
|
const receivers: any[] = users.map(user => user.id)
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
827
|
+
*/
|
|
828
|
+
|
|
829
|
+
// await sendNotification({
|
|
830
|
+
// receivers,
|
|
831
|
+
// message
|
|
832
|
+
// })
|
|
828
833
|
}
|
|
829
834
|
|
|
830
835
|
/**
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { EntityManager, getRepository } from 'typeorm'
|
|
2
|
+
|
|
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'
|
|
6
|
+
import { Domain } from '@things-factory/shell'
|
|
7
|
+
import { logger } from '@things-factory/env'
|
|
8
|
+
|
|
9
|
+
import { SellercraftController } from '../../../controllers'
|
|
10
|
+
|
|
11
|
+
export const fetchSellercraftDocumentResolver = {
|
|
12
|
+
async fetchSellercraftDocument(_: any, { releaseGoodId }, context: any) {
|
|
13
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
14
|
+
|
|
15
|
+
//find release goods base on id
|
|
16
|
+
let releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({ where: { domain, id: releaseGoodId }, relations: ['bizplace', 'bizplace.domain'] })
|
|
17
|
+
|
|
18
|
+
//find user sellercraft data
|
|
19
|
+
const sellercraft: Sellercraft = await getRepository(Sellercraft).findOne({
|
|
20
|
+
domain: releaseGood.bizplace.domain,
|
|
21
|
+
status: SellercraftStatus.ACTIVE
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
// instantiate sellercraft controller
|
|
25
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
// fetch document if not found
|
|
29
|
+
if (sellercraft && !releaseGood?.airwayBill) {
|
|
30
|
+
try {
|
|
31
|
+
// try fetch order document / AWB
|
|
32
|
+
releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
33
|
+
} catch (error) {
|
|
34
|
+
try {
|
|
35
|
+
// retry initiate order document
|
|
36
|
+
await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
|
|
37
|
+
} catch (error) {
|
|
38
|
+
try {
|
|
39
|
+
// retry initiate order shipment / RTS
|
|
40
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
41
|
+
} catch (error) {
|
|
42
|
+
throw new Error(`initiateOrderShipment: ${error}`)
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`initiateOrderDocument: ${error}`)
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`fetchOrderDocument: ${error}`)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const airwayBill: string = releaseGood?.airwayBill
|
|
51
|
+
const invoice: string = releaseGood?.invoice
|
|
52
|
+
return { airwayBill, invoice }
|
|
53
|
+
|
|
54
|
+
} catch (error) {
|
|
55
|
+
// await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
56
|
+
logger.error(`packing-worksheet[getSellercraftDocument]:(data:${JSON.stringify({ sellercraft, releaseGood, domain, user })}) ${error} `)
|
|
57
|
+
|
|
58
|
+
throw new Error('Waiting for AWB from marketplace. Please retry in awhile')
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -9,7 +9,7 @@ import { cycleCountWorksheetResolver } from './cycle-count-worksheet'
|
|
|
9
9
|
import { deleteWorksheet } from './delete-worksheet'
|
|
10
10
|
import { deliveryOrderByWorksheetResolver } from './delivery-order-by-worksheet'
|
|
11
11
|
import { fetchDeliveryOrderROResolver } from './fetch-delivery-order-ro'
|
|
12
|
-
import {
|
|
12
|
+
import { fetchSellercraftDocumentResolver } from './fetch-sellercraft-document'
|
|
13
13
|
import { findReleaseOrdersByTaskNoResolver } from './find-release-orders-by-task-no'
|
|
14
14
|
import { findSortingReleaseOrdersByTaskNoResolver } from './find-sorting-release-orders-by-task-no'
|
|
15
15
|
import { Mutations as GenerateWorksheetMutations } from './generate-worksheet'
|
|
@@ -137,6 +137,6 @@ export const Mutation = {
|
|
|
137
137
|
...crossDockPickingResolver,
|
|
138
138
|
...unpackingResolver,
|
|
139
139
|
...palletizingPallets,
|
|
140
|
-
...
|
|
140
|
+
...fetchSellercraftDocumentResolver,
|
|
141
141
|
...cancelDraftReleaseOrder
|
|
142
142
|
}
|
|
@@ -23,24 +23,29 @@ export async function scanProductPacking(
|
|
|
23
23
|
productBarcode: string,
|
|
24
24
|
serialNumber?: string
|
|
25
25
|
) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
26
|
+
try {
|
|
27
|
+
const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
|
|
28
|
+
const worksheetDetail = await worksheetController.scanProductPacking(
|
|
29
|
+
worksheetDetailName,
|
|
30
|
+
productBarcode,
|
|
31
|
+
serialNumber
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
35
|
+
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
36
|
+
|
|
37
|
+
if (releaseGood.type === 'b2c' && !releaseGood?.airwayBill) {
|
|
38
|
+
const sellercraft: Sellercraft = await tx
|
|
39
|
+
.getRepository(Sellercraft)
|
|
40
|
+
.findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
41
|
+
|
|
42
|
+
if (sellercraft) {
|
|
43
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
44
|
+
sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
45
|
+
}
|
|
44
46
|
}
|
|
47
|
+
|
|
48
|
+
} catch (error) {
|
|
49
|
+
throw error
|
|
45
50
|
}
|
|
46
51
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { EntityManager, SelectQueryBuilder } from 'typeorm'
|
|
1
|
+
import { EntityManager, SelectQueryBuilder, getManager } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { logger } from '@things-factory/env'
|
|
4
5
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
6
|
import {
|
|
6
7
|
MarketplaceOrder,
|
|
@@ -102,20 +103,15 @@ export const packingWorksheetResolver = {
|
|
|
102
103
|
let marketplaceStatus: string
|
|
103
104
|
|
|
104
105
|
if (releaseGood.type === 'b2c') {
|
|
106
|
+
|
|
105
107
|
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
106
108
|
domain: worksheet.bizplace.domain,
|
|
107
109
|
status: SellercraftStatus.ACTIVE
|
|
108
110
|
})
|
|
109
111
|
|
|
110
112
|
if (sellercraft) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
|
|
114
|
-
releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
115
|
-
}
|
|
116
|
-
trackingNo = releaseGood?.trackingNo
|
|
117
|
-
shippingProvider = releaseGood?.transporter
|
|
118
|
-
marketplaceStatus = releaseGood?.marketplaceOrderStatus
|
|
113
|
+
// asynchronously get document from sellercraft
|
|
114
|
+
getSellercraftDocument(sellercraft, releaseGood, domain, user)
|
|
119
115
|
} else {
|
|
120
116
|
marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
121
117
|
where: { orderNo: releaseGood.refNo },
|
|
@@ -242,3 +238,34 @@ export async function getTrackingNo(marketplaceStore, marketplaceOrderItems): Pr
|
|
|
242
238
|
|
|
243
239
|
return trackingNo
|
|
244
240
|
}
|
|
241
|
+
|
|
242
|
+
//trigger RTS, init document, and fetch sellercraft document in separated transaction
|
|
243
|
+
async function getSellercraftDocument(sellercraft: Sellercraft, releaseGood: ReleaseGood, domain: Domain, user: User) {
|
|
244
|
+
await getManager().transaction(async txMgr => {
|
|
245
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
|
|
246
|
+
try {
|
|
247
|
+
if (!releaseGood?.airwayBill) {
|
|
248
|
+
try {
|
|
249
|
+
// try fetch order document / AWB
|
|
250
|
+
releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
251
|
+
} catch (error) {
|
|
252
|
+
try {
|
|
253
|
+
// retry initiate order document
|
|
254
|
+
await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
|
|
255
|
+
} catch (error) {
|
|
256
|
+
try {
|
|
257
|
+
// retry initiate order shipment / RTS
|
|
258
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
259
|
+
} catch (error) {
|
|
260
|
+
throw new Error(`initiateOrderShipment: ${error}`)
|
|
261
|
+
}
|
|
262
|
+
throw new Error(`initiateOrderDocument: ${error}`)
|
|
263
|
+
}
|
|
264
|
+
throw new Error(`fetchOrderDocument: ${error}`)
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
} catch (error) {
|
|
268
|
+
logger.error(`packing-worksheet[getSellercraftDocument]:(data:${JSON.stringify({ sellercraft, releaseGood, domain, user })}) ${error} `)
|
|
269
|
+
}
|
|
270
|
+
})
|
|
271
|
+
}
|
|
@@ -214,10 +214,14 @@ export const pendingCancellationReleaseOrder = {
|
|
|
214
214
|
data: { url: context.header.referer }
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
/**
|
|
218
|
+
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
// await sendNotification({
|
|
222
|
+
// receivers,
|
|
223
|
+
// message: { ...msg }
|
|
224
|
+
// })
|
|
221
225
|
}
|
|
222
226
|
|
|
223
227
|
return
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityManager } from 'typeorm'
|
|
1
|
+
import { EntityManager, getManager } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
4
|
import { Bizplace, ContactPoint, getMyBizplace } from '@things-factory/biz-base'
|
|
@@ -82,30 +82,34 @@ export async function completePicking(
|
|
|
82
82
|
await pickingWSCtrl.completePicking(releaseGoodNo)
|
|
83
83
|
|
|
84
84
|
if (releaseGood.type == 'b2c') {
|
|
85
|
-
const sellercraft: Sellercraft = await tx
|
|
86
|
-
.getRepository(Sellercraft)
|
|
87
|
-
.findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
88
85
|
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
87
|
+
const initSCOrderShipment = async (sellercraft) => {
|
|
88
|
+
if (sellercraft) {
|
|
91
89
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
where: { releaseGood },
|
|
95
|
-
relations: ['product', 'product.productDetails']
|
|
96
|
-
})
|
|
97
|
-
releaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
|
|
90
|
+
await getManager().transaction(async txMgr => {
|
|
91
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
|
|
98
92
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
93
|
+
if (!releaseGood?.packageId) {
|
|
94
|
+
const orderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).find({
|
|
95
|
+
where: { releaseGood },
|
|
96
|
+
relations: ['product', 'product.productDetails']
|
|
97
|
+
})
|
|
98
|
+
releaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
|
|
99
|
+
|
|
100
|
+
if (releaseGood?.packageId) {
|
|
101
|
+
await txMgr.getRepository(ReleaseGood).update({ id: releaseGood.id }, { packageId: releaseGood.packageId, updater: releaseGood.updater })
|
|
102
|
+
}
|
|
103
|
+
}
|
|
105
104
|
|
|
106
|
-
|
|
105
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
106
|
+
})
|
|
107
|
+
}
|
|
107
108
|
}
|
|
108
109
|
|
|
110
|
+
// asynchronouly call to initiate sellercraft order shipment/ RTS
|
|
111
|
+
initSCOrderShipment(sellercraft)
|
|
112
|
+
|
|
109
113
|
const companyDomain: Domain = releaseGood.bizplace.company.domain
|
|
110
114
|
let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
111
115
|
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
@@ -231,10 +231,14 @@ export const proceedExtraProductsResolver = {
|
|
|
231
231
|
data: { url: context.header.referer }
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
234
|
+
/**
|
|
235
|
+
* @notes Temporary off sendNotification due to suspect of causing wms down
|
|
236
|
+
*/
|
|
237
|
+
|
|
238
|
+
// await sendNotification({
|
|
239
|
+
// receivers,
|
|
240
|
+
// message: { ...msg }
|
|
241
|
+
// })
|
|
238
242
|
}
|
|
239
243
|
}
|
|
240
244
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SellercraftDocument } from './sellercraft-document'
|
|
2
2
|
import { ArrivalNoticeWorksheet } from './arrival-notice-worksheet'
|
|
3
3
|
import { ContactPointInfo } from './contact-point-info'
|
|
4
4
|
import { CycleCountWorksheet } from './cycle-count-worksheet'
|
|
@@ -68,9 +68,9 @@ export const Mutation = /* GraphQL */ `
|
|
|
68
68
|
releaseGoodNos: [String!]
|
|
69
69
|
): Boolean @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
):
|
|
71
|
+
fetchSellercraftDocument (
|
|
72
|
+
releaseGoodId: String!
|
|
73
|
+
): SellercraftDocument @privilege(category: "worksheet_control", privilege: "mutation") @transaction
|
|
74
74
|
|
|
75
75
|
generateSortingWorksheet (
|
|
76
76
|
worksheetNo: String!
|
|
@@ -718,7 +718,7 @@ export const Query = /* GraphQL */ `
|
|
|
718
718
|
|
|
719
719
|
export const Types = /* GraphQL */[
|
|
720
720
|
Worksheet,
|
|
721
|
-
|
|
721
|
+
SellercraftDocument,
|
|
722
722
|
NewWorksheet,
|
|
723
723
|
WorksheetPatch,
|
|
724
724
|
WorksheetList,
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchSellercraftAirwayBillResolver = void 0;
|
|
4
|
-
const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
|
|
5
|
-
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
-
const controllers_1 = require("../../../controllers");
|
|
7
|
-
exports.fetchSellercraftAirwayBillResolver = {
|
|
8
|
-
async fetchSellercraftAirwayBill(_, { releaseGoodNo }, context) {
|
|
9
|
-
const { tx, domain, user } = context.state;
|
|
10
|
-
let releaseGood = await tx
|
|
11
|
-
.getRepository(sales_base_1.ReleaseGood)
|
|
12
|
-
.findOne({ where: { domain, name: releaseGoodNo }, relations: ['bizplace', 'bizplace.domain'] });
|
|
13
|
-
const sellercraft = await tx.getRepository(integration_sellercraft_1.Sellercraft).findOne({
|
|
14
|
-
domain: releaseGood.bizplace.domain,
|
|
15
|
-
status: integration_sellercraft_1.SellercraftStatus.ACTIVE
|
|
16
|
-
});
|
|
17
|
-
if (sellercraft && !(releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill)) {
|
|
18
|
-
const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
|
|
19
|
-
await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood);
|
|
20
|
-
}
|
|
21
|
-
const airwayBill = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill;
|
|
22
|
-
return { airwayBill };
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=fetch-sellercraft-airway-bill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-sellercraft-airway-bill.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts"],"names":[],"mappings":";;;AAGA,qFAAwF;AACxF,2DAAwD;AAGxD,sDAA4D;AAE/C,QAAA,kCAAkC,GAAG;IAChD,KAAK,CAAC,0BAA0B,CAAC,CAAM,EAAE,EAAE,aAAa,EAAE,EAAE,OAAY;QACtE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,IAAI,WAAW,GAAgB,MAAM,EAAE;aACpC,aAAa,CAAC,wBAAW,CAAC;aAC1B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;QAElG,MAAM,WAAW,GAAgB,MAAM,EAAE,CAAC,aAAa,CAAC,qCAAW,CAAC,CAAC,OAAO,CAAC;YAC3E,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM;YACnC,MAAM,EAAE,2CAAiB,CAAC,MAAM;SACjC,CAAC,CAAA;QAEF,IAAI,WAAW,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA,EAAE;YAC3C,MAAM,eAAe,GAA0B,IAAI,mCAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC1F,MAAM,eAAe,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;SACnE;QAED,MAAM,UAAU,GAAW,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;QAClD,OAAO,EAAE,UAAU,EAAE,CAAA;IACvB,CAAC;CACF,CAAA"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AirwayBill = void 0;
|
|
4
|
-
const apollo_server_koa_1 = require("apollo-server-koa");
|
|
5
|
-
exports.AirwayBill = (0, apollo_server_koa_1.gql) `
|
|
6
|
-
type AirwayBill {
|
|
7
|
-
airwayBill: String
|
|
8
|
-
}
|
|
9
|
-
`;
|
|
10
|
-
//# sourceMappingURL=airwaybill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"airwaybill.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/airwaybill.ts"],"names":[],"mappings":";;;AAAA,yDAAuC;AAE1B,QAAA,UAAU,GAAG,IAAA,uBAAG,EAAA;;;;CAI5B,CAAA"}
|
|
@@ -1,30 +0,0 @@
|
|
|
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 { ReleaseGood } from '@things-factory/sales-base'
|
|
6
|
-
import { Domain } from '@things-factory/shell'
|
|
7
|
-
|
|
8
|
-
import { SellercraftController } from '../../../controllers'
|
|
9
|
-
|
|
10
|
-
export const fetchSellercraftAirwayBillResolver = {
|
|
11
|
-
async fetchSellercraftAirwayBill(_: any, { releaseGoodNo }, context: any) {
|
|
12
|
-
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
13
|
-
let releaseGood: ReleaseGood = await tx
|
|
14
|
-
.getRepository(ReleaseGood)
|
|
15
|
-
.findOne({ where: { domain, name: releaseGoodNo }, relations: ['bizplace', 'bizplace.domain'] })
|
|
16
|
-
|
|
17
|
-
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
18
|
-
domain: releaseGood.bizplace.domain,
|
|
19
|
-
status: SellercraftStatus.ACTIVE
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
if (sellercraft && !releaseGood?.airwayBill) {
|
|
23
|
-
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
24
|
-
await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const airwayBill: string = releaseGood?.airwayBill
|
|
28
|
-
return { airwayBill }
|
|
29
|
-
}
|
|
30
|
-
}
|