@things-factory/worksheet-base 4.3.185 → 4.3.187
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/worksheet.js +3 -1
- package/dist-server/constants/worksheet.js.map +1 -1
- package/dist-server/controllers/ecommerce/ecommerce-controller.js +4 -1
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +10 -1
- package/dist-server/controllers/ecommerce/sellercraft-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/outbound/picking-worksheet-controller.js +19 -4
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/pos/xilnex-controller.js +5 -1
- package/dist-server/controllers/pos/xilnex-controller.js.map +1 -1
- package/dist-server/controllers/replenishment/index.js +18 -0
- package/dist-server/controllers/replenishment/index.js.map +1 -0
- package/dist-server/controllers/replenishment/replenishment-worksheet-controller.js +455 -0
- package/dist-server/controllers/replenishment/replenishment-worksheet-controller.js.map +1 -0
- package/dist-server/controllers/worksheet-controller.js +32 -9
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/index.js +10 -2
- package/dist-server/entities/index.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +15 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
- package/dist-server/entities/warehouse-inventory-assignment-ranking.js +37 -0
- package/dist-server/entities/warehouse-inventory-assignment-ranking.js.map +1 -0
- package/dist-server/entities/worksheet.js +13 -9
- package/dist-server/entities/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-replenishment.js +57 -0
- package/dist-server/graphql/resolvers/worksheet/cancel-replenishment.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +23 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +7 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.js +19 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +5 -2
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +37 -26
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +16 -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 +290 -264
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/replenishment-picking.js +12 -0
- package/dist-server/graphql/resolvers/worksheet/picking/replenishment-picking.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +142 -78
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.js +16 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/index.js +4 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/replenishment-putaway.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/replenishment-putaway.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.js +16 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.js +81 -0
- package/dist-server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.js +17 -0
- package/dist-server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/replenishment/index.js +6 -0
- package/dist-server/graphql/resolvers/worksheet/replenishment/index.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +1 -0
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +28 -2
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +42 -1
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/replenish-inventory-patch.js +11 -0
- package/dist-server/graphql/types/worksheet/replenish-inventory-patch.js.map +1 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/utils/index.js +1 -0
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/inventory-util.js +2 -0
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/lmd-util.js +76 -0
- package/dist-server/utils/lmd-util.js.map +1 -0
- package/dist-server/utils/worksheet-no-generator.js +21 -1
- package/dist-server/utils/worksheet-no-generator.js.map +1 -1
- package/dist-server/utils/worksheet-util.js +3 -0
- package/dist-server/utils/worksheet-util.js.map +1 -1
- package/package.json +13 -13
- package/server/constants/worksheet.ts +3 -1
- package/server/controllers/ecommerce/ecommerce-controller.ts +4 -1
- package/server/controllers/ecommerce/sellercraft-controller.ts +15 -1
- package/server/controllers/index.ts +1 -1
- package/server/controllers/outbound/picking-worksheet-controller.ts +30 -10
- package/server/controllers/pos/xilnex-controller.ts +6 -1
- package/server/controllers/replenishment/index.ts +1 -0
- package/server/controllers/replenishment/replenishment-worksheet-controller.ts +632 -0
- package/server/controllers/worksheet-controller.ts +47 -13
- package/server/entities/index.ts +15 -2
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +13 -1
- package/server/entities/warehouse-inventory-assignment-ranking.ts +19 -0
- package/server/entities/worksheet.ts +5 -1
- package/server/graphql/resolvers/worksheet/cancel-replenishment.ts +69 -0
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +22 -1
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +6 -1
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.ts +30 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/index.ts +8 -2
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +81 -41
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +16 -2
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +347 -301
- package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/picking/replenishment-picking.ts +27 -0
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +177 -95
- package/server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.ts +25 -0
- package/server/graphql/resolvers/worksheet/putaway/index.ts +7 -1
- package/server/graphql/resolvers/worksheet/putaway/replenishment-putaway.ts +23 -0
- package/server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.ts +22 -0
- package/server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.ts +95 -0
- package/server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.ts +26 -0
- package/server/graphql/resolvers/worksheet/replenishment/index.ts +5 -0
- package/server/graphql/resolvers/worksheet/worksheet.ts +1 -0
- package/server/graphql/resolvers/worksheet/worksheets.ts +38 -3
- package/server/graphql/types/worksheet/index.ts +42 -1
- package/server/graphql/types/worksheet/replenish-inventory-patch.ts +8 -0
- package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
- package/server/graphql/types/worksheet/worksheet.ts +1 -0
- package/server/index.ts +1 -0
- package/server/utils/index.ts +1 -0
- package/server/utils/inventory-util.ts +3 -0
- package/server/utils/lmd-util.ts +86 -0
- package/server/utils/worksheet-no-generator.ts +29 -1
- package/server/utils/worksheet-util.ts +4 -2
|
@@ -18,6 +18,7 @@ const controllers_1 = require("../../../../controllers/");
|
|
|
18
18
|
const ecommerce_1 = require("../../../../controllers/ecommerce");
|
|
19
19
|
const worksheet_controller_1 = require("../../../../controllers/worksheet-controller");
|
|
20
20
|
const entities_1 = require("../../../../entities");
|
|
21
|
+
const utils_1 = require("../../../../utils");
|
|
21
22
|
exports.completePickingResolver = {
|
|
22
23
|
async completePicking(_, { releaseGoodNo }, context) {
|
|
23
24
|
const { tx, domain, user } = context.state;
|
|
@@ -36,8 +37,9 @@ exports.completePickingResolver = {
|
|
|
36
37
|
}
|
|
37
38
|
};
|
|
38
39
|
async function completePicking(tx, domain, user, releaseGoodNo) {
|
|
39
|
-
var _a, _b;
|
|
40
|
+
var _a, _b, _c, _d;
|
|
40
41
|
const pickingWSCtrl = new controllers_1.PickingWorksheetController(tx, domain, user);
|
|
42
|
+
const replenishmentPickingWSCtrl = new controllers_1.ReplenishmentWorksheetController(tx, domain, user);
|
|
41
43
|
let releaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
|
|
42
44
|
where: { domain, name: releaseGoodNo },
|
|
43
45
|
relations: [
|
|
@@ -46,7 +48,11 @@ async function completePicking(tx, domain, user, releaseGoodNo) {
|
|
|
46
48
|
'bizplace.domain',
|
|
47
49
|
'bizplace.company',
|
|
48
50
|
'bizplace.company.domain',
|
|
51
|
+
'lastMileDelivery',
|
|
49
52
|
'orderPackages',
|
|
53
|
+
'orderPackages.orderPackageItems',
|
|
54
|
+
'orderPackages.orderPackageItems.orderProduct',
|
|
55
|
+
'orderPackages.orderPackageItems.orderProduct.product',
|
|
50
56
|
'orderProducts',
|
|
51
57
|
'orderProducts.product',
|
|
52
58
|
'orderProducts.productDetail',
|
|
@@ -54,312 +60,332 @@ async function completePicking(tx, domain, user, releaseGoodNo) {
|
|
|
54
60
|
'updater'
|
|
55
61
|
]
|
|
56
62
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
63
|
+
if (releaseGood) {
|
|
64
|
+
const worksheet = await pickingWSCtrl.findWorksheetByRefOrder(releaseGood, constants_1.WORKSHEET_TYPE.PICKING, [
|
|
65
|
+
'worksheetDetails',
|
|
66
|
+
'worksheetDetails.targetInventory',
|
|
67
|
+
'worksheetDetails.targetInventory.inventory'
|
|
68
|
+
]);
|
|
69
|
+
const warehouseContactPoint = await tx.getRepository(biz_base_1.ContactPoint).findOne({
|
|
70
|
+
where: {
|
|
71
|
+
domain,
|
|
72
|
+
type: 'WAREHOUSE'
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const worksheetDetails = worksheet.worksheetDetails;
|
|
76
|
+
const targetInventories = worksheetDetails.map((wsd) => wsd.targetInventory);
|
|
77
|
+
const inventories = targetInventories.map((ti) => ti.inventory);
|
|
78
|
+
const pickedTargetInventories = targetInventories.filter(targetInventory => targetInventory.status === sales_base_1.ORDER_INVENTORY_STATUS.PICKED);
|
|
79
|
+
let foundObsoleteInventories = await pickingWSCtrl.completePicking(releaseGood, worksheet, inventories);
|
|
80
|
+
if (foundObsoleteInventories === null || foundObsoleteInventories === void 0 ? void 0 : foundObsoleteInventories.type) {
|
|
81
|
+
const orderSource = releaseGood.source;
|
|
82
|
+
switch (orderSource) {
|
|
83
|
+
case auth_base_1.ApplicationType.SELLERCRAFT:
|
|
84
|
+
const sellercraft = await tx
|
|
85
|
+
.getRepository(integration_sellercraft_1.Sellercraft)
|
|
86
|
+
.findOne({ domain: releaseGood.bizplace.domain, status: integration_sellercraft_1.SellercraftStatus.ACTIVE });
|
|
87
|
+
if (sellercraft) {
|
|
88
|
+
const initSCOrderShipment = async (sellercraft) => {
|
|
89
|
+
await (0, typeorm_1.getManager)().transaction(async (txMgr) => {
|
|
90
|
+
var _a;
|
|
91
|
+
const sellercraftCtrl = new controllers_1.SellercraftController(txMgr, domain, user);
|
|
92
|
+
if (!((_a = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _a === void 0 ? void 0 : _a.length) && !(releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.marketPackCallSuccess)) {
|
|
93
|
+
const orderProducts = await txMgr.getRepository(sales_base_1.OrderProduct).find({
|
|
94
|
+
where: { releaseGood },
|
|
95
|
+
relations: ['product', 'product.productDetails']
|
|
96
|
+
});
|
|
97
|
+
await sellercraftCtrl.packOrder(sellercraft, Object.assign(Object.assign({}, releaseGood), { orderProducts }));
|
|
98
|
+
}
|
|
99
|
+
const rtsTriggerLevel = await txMgr.getRepository(setting_base_1.Setting).findOne({
|
|
100
|
+
where: { domain, category: 'id-rule', name: 'rts-trigger-level' }
|
|
89
101
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
where: { domain, category: 'id-rule', name: 'rts-trigger-level' }
|
|
102
|
+
if (rtsTriggerLevel && parseInt((rtsTriggerLevel === null || rtsTriggerLevel === void 0 ? void 0 : rtsTriggerLevel.value) || 0) == 1) {
|
|
103
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood);
|
|
104
|
+
}
|
|
94
105
|
});
|
|
95
|
-
if (rtsTriggerLevel && parseInt((rtsTriggerLevel === null || rtsTriggerLevel === void 0 ? void 0 : rtsTriggerLevel.value) || 0) == 1) {
|
|
96
|
-
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
};
|
|
100
|
-
// asynchronouly call to initiate sellercraft order shipment/ RTS
|
|
101
|
-
initSCOrderShipment(sellercraft);
|
|
102
|
-
}
|
|
103
|
-
break;
|
|
104
|
-
case auth_base_1.ApplicationType.MMS:
|
|
105
|
-
const companyDomain = releaseGood.bizplace.company.domain;
|
|
106
|
-
let marketplaceOrder = await tx.getRepository(marketplace_base_1.MarketplaceOrder).findOne({
|
|
107
|
-
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
108
|
-
relations: [
|
|
109
|
-
'marketplaceStore',
|
|
110
|
-
'marketplaceStore.marketplaceDistributors',
|
|
111
|
-
'marketplaceOrderItems',
|
|
112
|
-
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
113
|
-
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
|
|
114
|
-
]
|
|
115
|
-
});
|
|
116
|
-
if (marketplaceOrder) {
|
|
117
|
-
const ecommerceCtrl = new ecommerce_1.EcommerceController(tx, domain, user);
|
|
118
|
-
const marketplaceStore = marketplaceOrder.marketplaceStore;
|
|
119
|
-
let eTraxOption;
|
|
120
|
-
if (marketplaceStore === null || marketplaceStore === void 0 ? void 0 : marketplaceStore.isAutoUpdateShipment) {
|
|
121
|
-
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, sales_base_1.ORDER_STATUS.PACKING);
|
|
122
|
-
await ecommerceCtrl.createOrderShip(releaseGood, marketplaceStore, marketplaceOrder, companyDomain);
|
|
123
|
-
}
|
|
124
|
-
if (!marketplaceOrder) {
|
|
125
|
-
throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue');
|
|
126
|
-
}
|
|
127
|
-
eTraxOption = marketplaceOrder === null || marketplaceOrder === void 0 ? void 0 : marketplaceOrder.marketplaceStore.eTrax;
|
|
128
|
-
// if eTrax option is true
|
|
129
|
-
if (eTraxOption) {
|
|
130
|
-
const marketplaceOrderItems = marketplaceOrder.marketplaceOrderItems;
|
|
131
|
-
// access every marketplaceOrderItems for shipping information you need
|
|
132
|
-
// trigger the controller from integration-lmd that trigger the API, build the parameters needed
|
|
133
|
-
// for etrax didn't support multi awb per order
|
|
134
|
-
const marketplaceOrderShippingItems = marketplaceOrderItems[0].marketplaceOrderShippingItems;
|
|
135
|
-
const marketplaceOrderShipping = marketplaceOrderShippingItems[0].marketplaceOrderShipping;
|
|
136
|
-
const lmd = await tx.getRepository(integration_lmd_1.LastMileDelivery).findOne({
|
|
137
|
-
where: {
|
|
138
|
-
domain,
|
|
139
|
-
platform: 'eTrax'
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
//Get which transporter to use
|
|
143
|
-
const marketplaceTransporter = await tx
|
|
144
|
-
.getRepository(integration_marketplace_1.MarketplaceTransporter)
|
|
145
|
-
.findOne({
|
|
146
|
-
where: { marketplaceStore: marketplaceOrder.marketplaceStore },
|
|
147
|
-
relations: ['pickupTransporter', 'deliveryTransporter']
|
|
148
|
-
});
|
|
149
|
-
const resp = await integration_lmd_1.LastMileAPI.createShipmentRequest(lmd, {
|
|
150
|
-
orderNo: marketplaceOrder.orderNo,
|
|
151
|
-
clientId: lmd.clientId,
|
|
152
|
-
clientType: lmd.clientType,
|
|
153
|
-
clientName: lmd.clientName,
|
|
154
|
-
transporterId: marketplaceTransporter.pickupTransporter.transporterId,
|
|
155
|
-
pickupName: warehouseContactPoint.name,
|
|
156
|
-
pickupAddress1: warehouseContactPoint.address,
|
|
157
|
-
pickupAddress2: warehouseContactPoint.address2,
|
|
158
|
-
pickupPostcode: warehouseContactPoint.postCode,
|
|
159
|
-
pickupState: warehouseContactPoint.state,
|
|
160
|
-
pickupCity: warehouseContactPoint.city,
|
|
161
|
-
pickupPhone: warehouseContactPoint.phone,
|
|
162
|
-
pickupEmail: warehouseContactPoint.email,
|
|
163
|
-
name: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.attentionTo) ? marketplaceOrderShipping.attentionTo.trim() : '',
|
|
164
|
-
address1: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address1) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address1.trim() : '-',
|
|
165
|
-
address2: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address2) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address2.trim() : '-',
|
|
166
|
-
postCode: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.postCode) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.postCode.trim() : '',
|
|
167
|
-
city: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.city) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.city.trim() : '',
|
|
168
|
-
state: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.state) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.state.trim() : '',
|
|
169
|
-
phone: marketplaceOrderShipping.phone1 || '',
|
|
170
|
-
email: marketplaceOrderShipping.email || '',
|
|
171
|
-
attentionTo: marketplaceOrderShipping.attentionTo,
|
|
172
|
-
quantity: marketplaceOrderItems.length
|
|
173
|
-
});
|
|
174
|
-
const delay = (ms) => {
|
|
175
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
176
106
|
};
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
107
|
+
// asynchronouly call to initiate sellercraft order shipment/ RTS
|
|
108
|
+
initSCOrderShipment(sellercraft);
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
case auth_base_1.ApplicationType.MMS:
|
|
112
|
+
const companyDomain = releaseGood.bizplace.company.domain;
|
|
113
|
+
let marketplaceOrder = await tx.getRepository(marketplace_base_1.MarketplaceOrder).findOne({
|
|
114
|
+
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
115
|
+
relations: [
|
|
116
|
+
'marketplaceStore',
|
|
117
|
+
'marketplaceStore.marketplaceDistributors',
|
|
118
|
+
'marketplaceOrderItems',
|
|
119
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
120
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
|
|
121
|
+
]
|
|
122
|
+
});
|
|
123
|
+
if (marketplaceOrder) {
|
|
124
|
+
const ecommerceCtrl = new ecommerce_1.EcommerceController(tx, domain, user);
|
|
125
|
+
const marketplaceStore = marketplaceOrder.marketplaceStore;
|
|
126
|
+
let eTraxOption;
|
|
127
|
+
if (marketplaceStore === null || marketplaceStore === void 0 ? void 0 : marketplaceStore.isAutoUpdateShipment) {
|
|
128
|
+
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, sales_base_1.ORDER_STATUS.PACKING);
|
|
129
|
+
await ecommerceCtrl.createOrderShip(releaseGood, marketplaceStore, marketplaceOrder, companyDomain);
|
|
130
|
+
}
|
|
131
|
+
if (!marketplaceOrder) {
|
|
132
|
+
throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue');
|
|
133
|
+
}
|
|
134
|
+
eTraxOption = marketplaceOrder === null || marketplaceOrder === void 0 ? void 0 : marketplaceOrder.marketplaceStore.eTrax;
|
|
135
|
+
// if eTrax option is true
|
|
136
|
+
if (eTraxOption) {
|
|
137
|
+
const marketplaceOrderItems = marketplaceOrder.marketplaceOrderItems;
|
|
138
|
+
// access every marketplaceOrderItems for shipping information you need
|
|
139
|
+
// trigger the controller from integration-lmd that trigger the API, build the parameters needed
|
|
140
|
+
// for etrax didn't support multi awb per order
|
|
141
|
+
const marketplaceOrderShippingItems = marketplaceOrderItems[0].marketplaceOrderShippingItems;
|
|
142
|
+
const marketplaceOrderShipping = marketplaceOrderShippingItems[0].marketplaceOrderShipping;
|
|
143
|
+
const lmd = await tx.getRepository(integration_lmd_1.LastMileDelivery).findOne({
|
|
144
|
+
where: {
|
|
145
|
+
domain,
|
|
146
|
+
platform: 'eTrax'
|
|
194
147
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
148
|
+
});
|
|
149
|
+
//Get which transporter to use
|
|
150
|
+
const marketplaceTransporter = await tx
|
|
151
|
+
.getRepository(integration_marketplace_1.MarketplaceTransporter)
|
|
152
|
+
.findOne({
|
|
153
|
+
where: { marketplaceStore: marketplaceOrder.marketplaceStore },
|
|
154
|
+
relations: ['pickupTransporter', 'deliveryTransporter']
|
|
155
|
+
});
|
|
156
|
+
const resp = await integration_lmd_1.LastMileAPI.createShipmentRequest(lmd, {
|
|
157
|
+
orderNo: marketplaceOrder.orderNo,
|
|
158
|
+
clientId: lmd.clientId,
|
|
159
|
+
clientType: lmd.clientType,
|
|
160
|
+
clientName: lmd.clientName,
|
|
161
|
+
transporterId: marketplaceTransporter.pickupTransporter.transporterId,
|
|
162
|
+
pickupName: warehouseContactPoint.name,
|
|
163
|
+
pickupAddress1: warehouseContactPoint.address,
|
|
164
|
+
pickupAddress2: warehouseContactPoint.address2,
|
|
165
|
+
pickupPostcode: warehouseContactPoint.postCode,
|
|
166
|
+
pickupState: warehouseContactPoint.state,
|
|
167
|
+
pickupCity: warehouseContactPoint.city,
|
|
168
|
+
pickupPhone: warehouseContactPoint.phone,
|
|
169
|
+
pickupEmail: warehouseContactPoint.email,
|
|
170
|
+
name: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.attentionTo) ? marketplaceOrderShipping.attentionTo.trim() : '',
|
|
171
|
+
address1: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address1) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address1.trim() : '-',
|
|
172
|
+
address2: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address2) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.address2.trim() : '-',
|
|
173
|
+
postCode: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.postCode) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.postCode.trim() : '',
|
|
174
|
+
city: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.city) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.city.trim() : '',
|
|
175
|
+
state: (marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.state) ? marketplaceOrderShipping === null || marketplaceOrderShipping === void 0 ? void 0 : marketplaceOrderShipping.state.trim() : '',
|
|
176
|
+
phone: marketplaceOrderShipping.phone1 || '',
|
|
177
|
+
email: marketplaceOrderShipping.email || '',
|
|
178
|
+
attentionTo: marketplaceOrderShipping.attentionTo,
|
|
179
|
+
quantity: marketplaceOrderItems.length
|
|
180
|
+
});
|
|
181
|
+
const delay = (ms) => {
|
|
182
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
183
|
+
};
|
|
184
|
+
if (resp.Status === 'SUCCESS') {
|
|
185
|
+
//Success
|
|
186
|
+
let awbObtained = false;
|
|
187
|
+
let retry = 0;
|
|
188
|
+
while (!awbObtained) {
|
|
189
|
+
const marketplaceOrder2 = await tx.getRepository(marketplace_base_1.MarketplaceOrder).findOne({
|
|
190
|
+
where: { releaseOrderId: releaseGood.id },
|
|
191
|
+
relations: [
|
|
192
|
+
'marketplaceStore',
|
|
193
|
+
'marketplaceOrderItems',
|
|
194
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
195
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
|
|
196
|
+
]
|
|
197
|
+
});
|
|
198
|
+
const orderShipping = marketplaceOrder2.marketplaceOrderItems[0].marketplaceOrderShippingItems[0].marketplaceOrderShipping;
|
|
199
|
+
if (orderShipping === null || orderShipping === void 0 ? void 0 : orderShipping.airwayBill) {
|
|
200
|
+
awbObtained = true;
|
|
201
|
+
}
|
|
202
|
+
await delay(5000);
|
|
203
|
+
//Timeout after 15sec
|
|
204
|
+
if (++retry > 3) {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
199
207
|
}
|
|
200
208
|
}
|
|
209
|
+
else {
|
|
210
|
+
if ((resp === null || resp === void 0 ? void 0 : resp.AWBurl) && (resp === null || resp === void 0 ? void 0 : resp.TrackingNo))
|
|
211
|
+
await tx
|
|
212
|
+
.getRepository(marketplace_base_1.MarketplaceOrderShipping)
|
|
213
|
+
.update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo });
|
|
214
|
+
else
|
|
215
|
+
throw resp;
|
|
216
|
+
}
|
|
201
217
|
}
|
|
202
|
-
|
|
203
|
-
if ((resp === null || resp === void 0 ? void 0 : resp.AWBurl) && (resp === null || resp === void 0 ? void 0 : resp.TrackingNo))
|
|
204
|
-
await tx
|
|
205
|
-
.getRepository(marketplace_base_1.MarketplaceOrderShipping)
|
|
206
|
-
.update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo });
|
|
207
|
-
else
|
|
208
|
-
throw resp;
|
|
209
|
-
}
|
|
218
|
+
await ecommerceCtrl.createOrderPackage(tx, marketplaceOrder, companyDomain, marketplaceStore, releaseGood);
|
|
210
219
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
transporter: null,
|
|
220
|
-
airwayBill: null,
|
|
221
|
-
status: sales_base_1.ORDER_STATUS.PROCESSING,
|
|
222
|
-
releaseGood,
|
|
223
|
-
domain: releaseGood.domain,
|
|
224
|
-
bizplace: releaseGood.bizplace,
|
|
225
|
-
creator: releaseGood.creator,
|
|
226
|
-
updater: releaseGood.updater
|
|
227
|
-
};
|
|
228
|
-
let savedOrderPackage = await tx.getRepository(sales_base_1.OrderPackage).save(orderPackage);
|
|
229
|
-
const orderPackageItems = releaseGood.orderProducts.map(op => {
|
|
230
|
-
return {
|
|
231
|
-
name: sales_base_1.OrderNoGenerator.orderPackageItem(),
|
|
232
|
-
orderProduct: op,
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
let orderPackage = {
|
|
223
|
+
name: sales_base_1.OrderNoGenerator.orderPackage(),
|
|
224
|
+
packageId: null,
|
|
225
|
+
trackingNo: null,
|
|
226
|
+
transporter: null,
|
|
227
|
+
airwayBill: null,
|
|
233
228
|
status: sales_base_1.ORDER_STATUS.PROCESSING,
|
|
234
|
-
|
|
235
|
-
orderPackage: savedOrderPackage,
|
|
229
|
+
releaseGood,
|
|
236
230
|
domain: releaseGood.domain,
|
|
237
231
|
bizplace: releaseGood.bizplace,
|
|
238
232
|
creator: releaseGood.creator,
|
|
239
233
|
updater: releaseGood.updater
|
|
240
234
|
};
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
235
|
+
let savedOrderPackage = await tx.getRepository(sales_base_1.OrderPackage).save(orderPackage);
|
|
236
|
+
const orderPackageItems = releaseGood.orderProducts.map(op => {
|
|
237
|
+
return {
|
|
238
|
+
name: sales_base_1.OrderNoGenerator.orderPackageItem(),
|
|
239
|
+
orderProduct: op,
|
|
240
|
+
status: sales_base_1.ORDER_STATUS.PROCESSING,
|
|
241
|
+
releaseQty: op.releaseQty,
|
|
242
|
+
orderPackage: savedOrderPackage,
|
|
243
|
+
domain: releaseGood.domain,
|
|
244
|
+
bizplace: releaseGood.bizplace,
|
|
245
|
+
creator: releaseGood.creator,
|
|
246
|
+
updater: releaseGood.updater
|
|
247
|
+
};
|
|
248
|
+
});
|
|
249
|
+
await tx.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
|
|
250
|
+
orderPackage.orderPackageItems = orderPackageItems;
|
|
251
|
+
releaseGood.orderPackages = [orderPackage];
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
const account = await tx
|
|
255
|
+
.getRepository(integration_accounting_1.Account)
|
|
256
|
+
.findOne({ where: { domain: releaseGood.bizplace.domain, status: 'active' }, relations: ['domain'] });
|
|
257
|
+
// Xilnex Create Sales Order and Post Sales Order to Sales Invoice
|
|
258
|
+
const createSalesOrder = async (account, tx) => {
|
|
259
|
+
if (account) {
|
|
260
|
+
if (account.platform == 'xilnex') {
|
|
261
|
+
let integrationInfo = {
|
|
262
|
+
xilnex: {
|
|
263
|
+
accountId: account.accountId,
|
|
264
|
+
startTime: new Date()
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
try {
|
|
268
|
+
const salesOrder = await integration_accounting_1.AccountingAPI.createSalesOrder(account, {
|
|
269
|
+
releaseGood,
|
|
270
|
+
orderProducts: releaseGood.orderProducts
|
|
271
|
+
});
|
|
272
|
+
if (salesOrder) {
|
|
273
|
+
integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { salesOrderId: salesOrder.id, endTime: new Date() });
|
|
274
|
+
try {
|
|
275
|
+
const salesInvoice = await integration_accounting_1.AccountingAPI.postSalesOrderToSalesInvoice(account, {
|
|
276
|
+
orderId: (salesOrder === null || salesOrder === void 0 ? void 0 : salesOrder.id) || null
|
|
277
|
+
});
|
|
278
|
+
if (salesInvoice) {
|
|
279
|
+
integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { salesInvoiceId: salesInvoice.salesId, endTime: new Date() });
|
|
280
|
+
const salesOrderItems = salesInvoice.sale.items;
|
|
281
|
+
await Promise.all(releaseGood.orderProducts.map(async (op) => {
|
|
282
|
+
const matchedProduct = salesOrderItems.find(soi => soi.itemId == op.productDetail.refCode);
|
|
283
|
+
if (matchedProduct) {
|
|
284
|
+
await tx.getRepository(sales_base_1.OrderProduct).update({ id: op.id }, { refItemId: matchedProduct.id });
|
|
285
|
+
}
|
|
286
|
+
}));
|
|
287
|
+
await tx
|
|
288
|
+
.getRepository(sales_base_1.ReleaseGood)
|
|
289
|
+
.update({ id: releaseGood.id }, { collectionOrderNo: salesInvoice.salesId, integrationInfo, updater: releaseGood.updater });
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { endTime: new Date() });
|
|
278
294
|
await tx
|
|
279
295
|
.getRepository(sales_base_1.ReleaseGood)
|
|
280
|
-
.update({ id: releaseGood.id }, {
|
|
296
|
+
.update({ id: releaseGood.id }, { integrationInfo, integrationFail: true, updater: releaseGood.updater });
|
|
297
|
+
env_1.logger.error(`complete-picking[createSalesInvoice][${releaseGood.refNo}]: ${error}`);
|
|
281
298
|
}
|
|
282
299
|
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { endTime: new Date() });
|
|
285
|
-
await tx
|
|
286
|
-
.getRepository(sales_base_1.ReleaseGood)
|
|
287
|
-
.update({ id: releaseGood.id }, { integrationInfo, integrationFail: true, updater: releaseGood.updater });
|
|
288
|
-
env_1.logger.error(`complete-picking[createSalesInvoice][${releaseGood.refNo}]: ${error}`);
|
|
289
|
-
}
|
|
290
300
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
.
|
|
297
|
-
|
|
301
|
+
catch (error) {
|
|
302
|
+
integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { endTime: new Date() });
|
|
303
|
+
await tx
|
|
304
|
+
.getRepository(sales_base_1.ReleaseGood)
|
|
305
|
+
.update({ id: releaseGood.id }, { integrationInfo, integrationFail: true, updater: releaseGood.updater });
|
|
306
|
+
env_1.logger.error(`complete-picking[createSalesOrder][${releaseGood.refNo}]: ${error}`);
|
|
307
|
+
}
|
|
298
308
|
}
|
|
299
309
|
}
|
|
310
|
+
};
|
|
311
|
+
if (releaseGood.type == 'b2c') {
|
|
312
|
+
await createSalesOrder(account, tx);
|
|
300
313
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
314
|
+
if (releaseGood.packingOption) {
|
|
315
|
+
const packingWSCtrl = new controllers_1.PackingWorksheetController(tx, domain, user);
|
|
316
|
+
await packingWSCtrl.generatePackingWorksheet(releaseGoodNo);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
// Find Existing Loading Worksheet if any
|
|
320
|
+
let existLoadingWorksheet = await tx.getRepository(entities_1.Worksheet).findOne({
|
|
321
|
+
where: {
|
|
322
|
+
releaseGood,
|
|
323
|
+
type: constants_1.WORKSHEET_TYPE.LOADING,
|
|
324
|
+
status: constants_1.WORKSHEET_STATUS.DEACTIVATED
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
|
|
328
|
+
if (pickedTargetInventories.length > 0) {
|
|
329
|
+
const loadingWSCtrl = new controllers_1.LoadingWorksheetController(tx, domain, user);
|
|
330
|
+
let loadingWorksheet = await loadingWSCtrl.generateLoadingWorksheet(releaseGoodNo, pickedTargetInventories);
|
|
331
|
+
if (!((_a = loadingWorksheet.worksheetDetails) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
332
|
+
loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id);
|
|
333
|
+
}
|
|
334
|
+
const loadingWorksheetDetails = loadingWorksheet.worksheetDetails;
|
|
335
|
+
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails);
|
|
336
|
+
}
|
|
316
337
|
}
|
|
317
|
-
|
|
318
|
-
if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
|
|
319
|
-
if (pickedTargetInventories.length > 0) {
|
|
338
|
+
else {
|
|
320
339
|
const loadingWSCtrl = new controllers_1.LoadingWorksheetController(tx, domain, user);
|
|
321
|
-
let loadingWorksheet = await loadingWSCtrl.
|
|
322
|
-
if (!((
|
|
340
|
+
let loadingWorksheet = await loadingWSCtrl.updateLoadingWorksheet(releaseGoodNo, pickedTargetInventories, existLoadingWorksheet);
|
|
341
|
+
if (!((_b = loadingWorksheet.worksheetDetails) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
323
342
|
loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id);
|
|
324
343
|
}
|
|
325
344
|
const loadingWorksheetDetails = loadingWorksheet.worksheetDetails;
|
|
326
345
|
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails);
|
|
327
346
|
}
|
|
328
347
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
const loadingWorksheetDetails = loadingWorksheet.worksheetDetails;
|
|
336
|
-
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails);
|
|
348
|
+
// trigger LMD API to create parcel
|
|
349
|
+
if (((_c = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _c === void 0 ? void 0 : _c.length) &&
|
|
350
|
+
releaseGood.lmdOption &&
|
|
351
|
+
releaseGood.lastMileDelivery &&
|
|
352
|
+
((_d = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _d === void 0 ? void 0 : _d.some(op => op.parcelId == null))) {
|
|
353
|
+
await (0, utils_1.createLmdParcel)([releaseGood], tx);
|
|
337
354
|
}
|
|
355
|
+
//
|
|
338
356
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
await tx.getRepository(sales_base_1.ReleaseGood).query(`
|
|
357
|
+
else {
|
|
358
|
+
//update inventories obsolete to true
|
|
359
|
+
await tx.getRepository(warehouse_base_1.Inventory).update({ id: (0, typeorm_1.In)(foundObsoleteInventories) }, { obsolete: true });
|
|
360
|
+
foundObsoleteInventories = foundObsoleteInventories
|
|
361
|
+
.map(inv => {
|
|
362
|
+
return "'" + inv.trim() + "'";
|
|
363
|
+
})
|
|
364
|
+
.join(',');
|
|
365
|
+
//update any orders that is assigned with obsolete inventories
|
|
366
|
+
await tx.getRepository(sales_base_1.ReleaseGood).query(`
|
|
350
367
|
update release_goods rg set status = 'OBSOLETE'
|
|
351
368
|
from order_inventories oi
|
|
352
369
|
where oi.release_good_id = rg.id
|
|
353
370
|
and oi.inventory_id in (${foundObsoleteInventories})
|
|
354
371
|
and rg.status in ('PICKING', 'PENDING_WORKSHEET', 'READY_TO_PICK')`);
|
|
355
|
-
|
|
372
|
+
await tx.getRepository(entities_1.Worksheet).query(`
|
|
356
373
|
update worksheets w set status = 'DEACTIVATED', updater_id = '${user.id}', assignee_id = null
|
|
357
374
|
from worksheet_details wd
|
|
358
375
|
inner join order_inventories oi on oi.id = wd.target_inventory_id
|
|
359
376
|
where wd.worksheet_id = w.id
|
|
360
377
|
and oi.inventory_id in (${foundObsoleteInventories})
|
|
361
378
|
`);
|
|
362
|
-
|
|
379
|
+
return true;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
let replenishment = await tx.getRepository(sales_base_1.Replenishment).findOne({
|
|
384
|
+
where: { domain, name: releaseGoodNo }
|
|
385
|
+
});
|
|
386
|
+
const worksheet = await pickingWSCtrl.findWorksheetByRefOrder(replenishment, constants_1.WORKSHEET_TYPE.PICKING_REPLENISHMENT, ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']);
|
|
387
|
+
await replenishmentPickingWSCtrl.completeReplenishmentPicking(replenishment, worksheet);
|
|
388
|
+
await replenishmentPickingWSCtrl.generatePutawayReplenishmentWorksheet(releaseGoodNo);
|
|
363
389
|
}
|
|
364
390
|
}
|
|
365
391
|
exports.completePicking = completePicking;
|