@things-factory/worksheet-base 4.3.67 → 4.3.70
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/sellercraft-controller.js +31 -25
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js +81 -52
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.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/inventories-by-pallet.js +2 -3
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.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/picking/complete-picking.js +20 -17
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/types/worksheet/delivery-order-info.js +3 -0
- package/dist-server/graphql/types/worksheet/delivery-order-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +6 -6
- 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/package.json +17 -17
- package/server/controllers/ecommerce/sellercraft-controller.ts +42 -29
- package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +86 -51
- 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/inventories-by-pallet.ts +2 -5
- 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/picking/complete-picking.ts +23 -19
- package/server/graphql/types/worksheet/delivery-order-info.ts +3 -0
- package/server/graphql/types/worksheet/index.ts +6 -6
- 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,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
|
+
}
|
|
@@ -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 },
|
|
@@ -2,6 +2,7 @@ import { gql } from 'apollo-server-koa'
|
|
|
2
2
|
|
|
3
3
|
export const DeliveryOrderInfo = gql`
|
|
4
4
|
type DeliveryOrderInfo {
|
|
5
|
+
name: String
|
|
5
6
|
ownCollection: Boolean
|
|
6
7
|
doStatus: String
|
|
7
8
|
truckNo: String
|
|
@@ -17,5 +18,7 @@ export const DeliveryOrderInfo = gql`
|
|
|
17
18
|
reusablePallet: String
|
|
18
19
|
createdDate: String
|
|
19
20
|
isManualDo: Boolean
|
|
21
|
+
releaseGood: ReleaseGood
|
|
22
|
+
productList: [Product]
|
|
20
23
|
}
|
|
21
24
|
`
|
|
@@ -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!
|
|
@@ -628,7 +628,7 @@ export const Query = /* GraphQL */ `
|
|
|
628
628
|
|
|
629
629
|
deliveryOrderByWorksheet (
|
|
630
630
|
name: String!
|
|
631
|
-
): GoodsDeliveryNote @privilege(category: "worksheet", privilege: "query")
|
|
631
|
+
): GoodsDeliveryNote @privilege(category: "worksheet", privilege: "query") @transaction
|
|
632
632
|
|
|
633
633
|
fetchDeliveryOrderRO (
|
|
634
634
|
name: 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
|
-
}
|