@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.
Files changed (133) hide show
  1. package/dist-server/constants/worksheet.js +3 -1
  2. package/dist-server/constants/worksheet.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/ecommerce-controller.js +4 -1
  4. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/sellercraft-controller.js +10 -1
  6. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  7. package/dist-server/controllers/index.js +1 -0
  8. package/dist-server/controllers/index.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +19 -4
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/pos/xilnex-controller.js +5 -1
  12. package/dist-server/controllers/pos/xilnex-controller.js.map +1 -1
  13. package/dist-server/controllers/replenishment/index.js +18 -0
  14. package/dist-server/controllers/replenishment/index.js.map +1 -0
  15. package/dist-server/controllers/replenishment/replenishment-worksheet-controller.js +455 -0
  16. package/dist-server/controllers/replenishment/replenishment-worksheet-controller.js.map +1 -0
  17. package/dist-server/controllers/worksheet-controller.js +32 -9
  18. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  19. package/dist-server/entities/index.js +10 -2
  20. package/dist-server/entities/index.js.map +1 -1
  21. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +15 -1
  22. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
  23. package/dist-server/entities/warehouse-inventory-assignment-ranking.js +37 -0
  24. package/dist-server/entities/warehouse-inventory-assignment-ranking.js.map +1 -0
  25. package/dist-server/entities/worksheet.js +13 -9
  26. package/dist-server/entities/worksheet.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/cancel-replenishment.js +57 -0
  28. package/dist-server/graphql/resolvers/worksheet/cancel-replenishment.js.map +1 -0
  29. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +23 -1
  30. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +7 -1
  32. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.js +19 -0
  34. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.js.map +1 -0
  35. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js +2 -1
  36. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/index.js +5 -2
  38. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +37 -26
  40. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +16 -2
  42. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +290 -264
  44. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -1
  46. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/picking/replenishment-picking.js +12 -0
  48. package/dist-server/graphql/resolvers/worksheet/picking/replenishment-picking.js.map +1 -0
  49. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +142 -78
  50. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.js +16 -0
  52. package/dist-server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.js.map +1 -0
  53. package/dist-server/graphql/resolvers/worksheet/putaway/index.js +4 -1
  54. package/dist-server/graphql/resolvers/worksheet/putaway/index.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet/putaway/replenishment-putaway.js +15 -0
  56. package/dist-server/graphql/resolvers/worksheet/putaway/replenishment-putaway.js.map +1 -0
  57. package/dist-server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.js +16 -0
  58. package/dist-server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.js.map +1 -0
  59. package/dist-server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.js +81 -0
  60. package/dist-server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.js.map +1 -0
  61. package/dist-server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.js +17 -0
  62. package/dist-server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.js.map +1 -0
  63. package/dist-server/graphql/resolvers/worksheet/replenishment/index.js +6 -0
  64. package/dist-server/graphql/resolvers/worksheet/replenishment/index.js.map +1 -0
  65. package/dist-server/graphql/resolvers/worksheet/worksheet.js +1 -0
  66. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  67. package/dist-server/graphql/resolvers/worksheet/worksheets.js +28 -2
  68. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  69. package/dist-server/graphql/types/worksheet/index.js +42 -1
  70. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  71. package/dist-server/graphql/types/worksheet/replenish-inventory-patch.js +11 -0
  72. package/dist-server/graphql/types/worksheet/replenish-inventory-patch.js.map +1 -0
  73. package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
  74. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  75. package/dist-server/graphql/types/worksheet/worksheet.js +1 -0
  76. package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
  77. package/dist-server/index.js +1 -0
  78. package/dist-server/index.js.map +1 -1
  79. package/dist-server/utils/index.js +1 -0
  80. package/dist-server/utils/index.js.map +1 -1
  81. package/dist-server/utils/inventory-util.js +2 -0
  82. package/dist-server/utils/inventory-util.js.map +1 -1
  83. package/dist-server/utils/lmd-util.js +76 -0
  84. package/dist-server/utils/lmd-util.js.map +1 -0
  85. package/dist-server/utils/worksheet-no-generator.js +21 -1
  86. package/dist-server/utils/worksheet-no-generator.js.map +1 -1
  87. package/dist-server/utils/worksheet-util.js +3 -0
  88. package/dist-server/utils/worksheet-util.js.map +1 -1
  89. package/package.json +13 -13
  90. package/server/constants/worksheet.ts +3 -1
  91. package/server/controllers/ecommerce/ecommerce-controller.ts +4 -1
  92. package/server/controllers/ecommerce/sellercraft-controller.ts +15 -1
  93. package/server/controllers/index.ts +1 -1
  94. package/server/controllers/outbound/picking-worksheet-controller.ts +30 -10
  95. package/server/controllers/pos/xilnex-controller.ts +6 -1
  96. package/server/controllers/replenishment/index.ts +1 -0
  97. package/server/controllers/replenishment/replenishment-worksheet-controller.ts +632 -0
  98. package/server/controllers/worksheet-controller.ts +47 -13
  99. package/server/entities/index.ts +15 -2
  100. package/server/entities/warehouse-bizplace-onhand-inventory.ts +13 -1
  101. package/server/entities/warehouse-inventory-assignment-ranking.ts +19 -0
  102. package/server/entities/worksheet.ts +5 -1
  103. package/server/graphql/resolvers/worksheet/cancel-replenishment.ts +69 -0
  104. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +22 -1
  105. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +6 -1
  106. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-replenishement-worksheet.ts +30 -0
  107. package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +3 -1
  108. package/server/graphql/resolvers/worksheet/index.ts +8 -2
  109. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +81 -41
  110. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +16 -2
  111. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +347 -301
  112. package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
  113. package/server/graphql/resolvers/worksheet/picking/replenishment-picking.ts +27 -0
  114. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +177 -95
  115. package/server/graphql/resolvers/worksheet/putaway/complete-replenishment-putaway.ts +25 -0
  116. package/server/graphql/resolvers/worksheet/putaway/index.ts +7 -1
  117. package/server/graphql/resolvers/worksheet/putaway/replenishment-putaway.ts +23 -0
  118. package/server/graphql/resolvers/worksheet/putaway/undo-replenishment-putaway.ts +22 -0
  119. package/server/graphql/resolvers/worksheet/putaway-replenishment-worksheet.ts +95 -0
  120. package/server/graphql/resolvers/worksheet/replenishment/activate-picking-replenishment.ts +26 -0
  121. package/server/graphql/resolvers/worksheet/replenishment/index.ts +5 -0
  122. package/server/graphql/resolvers/worksheet/worksheet.ts +1 -0
  123. package/server/graphql/resolvers/worksheet/worksheets.ts +38 -3
  124. package/server/graphql/types/worksheet/index.ts +42 -1
  125. package/server/graphql/types/worksheet/replenish-inventory-patch.ts +8 -0
  126. package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
  127. package/server/graphql/types/worksheet/worksheet.ts +1 -0
  128. package/server/index.ts +1 -0
  129. package/server/utils/index.ts +1 -0
  130. package/server/utils/inventory-util.ts +3 -0
  131. package/server/utils/lmd-util.ts +86 -0
  132. package/server/utils/worksheet-no-generator.ts +29 -1
  133. 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
- const worksheet = await pickingWSCtrl.findWorksheetByRefOrder(releaseGood, constants_1.WORKSHEET_TYPE.PICKING, [
58
- 'worksheetDetails',
59
- 'worksheetDetails.targetInventory',
60
- 'worksheetDetails.targetInventory.inventory'
61
- ]);
62
- const warehouseContactPoint = await tx.getRepository(biz_base_1.ContactPoint).findOne({
63
- where: {
64
- domain,
65
- type: 'WAREHOUSE'
66
- }
67
- });
68
- const worksheetDetails = worksheet.worksheetDetails;
69
- const targetInventories = worksheetDetails.map((wsd) => wsd.targetInventory);
70
- const inventories = targetInventories.map((ti) => ti.inventory);
71
- const pickedTargetInventories = targetInventories.filter(targetInventory => targetInventory.status === sales_base_1.ORDER_INVENTORY_STATUS.PICKED);
72
- let foundObsoleteInventories = await pickingWSCtrl.completePicking(releaseGood, worksheet, inventories);
73
- if (foundObsoleteInventories === null || foundObsoleteInventories === void 0 ? void 0 : foundObsoleteInventories.type) {
74
- const orderSource = releaseGood.source;
75
- switch (orderSource) {
76
- case auth_base_1.ApplicationType.SELLERCRAFT:
77
- const sellercraft = await tx
78
- .getRepository(integration_sellercraft_1.Sellercraft)
79
- .findOne({ domain: releaseGood.bizplace.domain, status: integration_sellercraft_1.SellercraftStatus.ACTIVE });
80
- if (sellercraft) {
81
- const initSCOrderShipment = async (sellercraft) => {
82
- await (0, typeorm_1.getManager)().transaction(async (txMgr) => {
83
- var _a;
84
- const sellercraftCtrl = new controllers_1.SellercraftController(txMgr, domain, user);
85
- 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)) {
86
- const orderProducts = await txMgr.getRepository(sales_base_1.OrderProduct).find({
87
- where: { releaseGood },
88
- relations: ['product', 'product.productDetails']
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
- await sellercraftCtrl.packOrder(sellercraft, Object.assign(Object.assign({}, releaseGood), { orderProducts }));
91
- }
92
- const rtsTriggerLevel = await txMgr.getRepository(setting_base_1.Setting).findOne({
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
- if (resp.Status === 'SUCCESS') {
178
- //Success
179
- let awbObtained = false;
180
- let retry = 0;
181
- while (!awbObtained) {
182
- const marketplaceOrder2 = await tx.getRepository(marketplace_base_1.MarketplaceOrder).findOne({
183
- where: { releaseOrderId: releaseGood.id },
184
- relations: [
185
- 'marketplaceStore',
186
- 'marketplaceOrderItems',
187
- 'marketplaceOrderItems.marketplaceOrderShippingItems',
188
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
189
- ]
190
- });
191
- const orderShipping = marketplaceOrder2.marketplaceOrderItems[0].marketplaceOrderShippingItems[0].marketplaceOrderShipping;
192
- if (orderShipping === null || orderShipping === void 0 ? void 0 : orderShipping.airwayBill) {
193
- awbObtained = true;
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
- await delay(5000);
196
- //Timeout after 15sec
197
- if (++retry > 3) {
198
- break;
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
- else {
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
- await ecommerceCtrl.createOrderPackage(tx, marketplaceOrder, companyDomain, marketplaceStore, releaseGood);
212
- }
213
- break;
214
- default:
215
- const orderPackage = {
216
- name: sales_base_1.OrderNoGenerator.orderPackage(),
217
- packageId: null,
218
- trackingNo: null,
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
- releaseQty: op.releaseQty,
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
- await tx.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
243
- break;
244
- }
245
- const account = await tx
246
- .getRepository(integration_accounting_1.Account)
247
- .findOne({ where: { domain: releaseGood.bizplace.domain, status: 'active' }, relations: ['domain'] });
248
- // Xilnex Create Sales Order and Post Sales Order to Sales Invoice
249
- const createSalesOrder = async (account, tx) => {
250
- if (account) {
251
- if (account.platform == 'xilnex') {
252
- let integrationInfo = {
253
- xilnex: {
254
- accountId: account.accountId,
255
- startTime: new Date()
256
- }
257
- };
258
- try {
259
- const salesOrder = await integration_accounting_1.AccountingAPI.createSalesOrder(account, {
260
- releaseGood,
261
- orderProducts: releaseGood.orderProducts
262
- });
263
- if (salesOrder) {
264
- integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { salesOrderId: salesOrder.id, endTime: new Date() });
265
- try {
266
- const salesInvoice = await integration_accounting_1.AccountingAPI.postSalesOrderToSalesInvoice(account, {
267
- orderId: (salesOrder === null || salesOrder === void 0 ? void 0 : salesOrder.id) || null
268
- });
269
- if (salesInvoice) {
270
- integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { salesInvoiceId: salesInvoice.salesId, endTime: new Date() });
271
- const salesOrderItems = salesInvoice.sale.items;
272
- await Promise.all(releaseGood.orderProducts.map(async (op) => {
273
- const matchedProduct = salesOrderItems.find(soi => soi.itemId == op.productDetail.refCode);
274
- if (matchedProduct) {
275
- await tx.getRepository(sales_base_1.OrderProduct).update({ id: op.id }, { refItemId: matchedProduct.id });
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 }, { collectionOrderNo: salesInvoice.salesId, integrationInfo, updater: releaseGood.updater });
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
- catch (error) {
293
- integrationInfo.xilnex = Object.assign(Object.assign({}, integrationInfo.xilnex), { endTime: new Date() });
294
- await tx
295
- .getRepository(sales_base_1.ReleaseGood)
296
- .update({ id: releaseGood.id }, { integrationInfo, integrationFail: true, updater: releaseGood.updater });
297
- env_1.logger.error(`complete-picking[createSalesOrder][${releaseGood.refNo}]: ${error}`);
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
- if (releaseGood.type == 'b2c') {
303
- await createSalesOrder(account, tx);
304
- }
305
- if (releaseGood.packingOption) {
306
- const packingWSCtrl = new controllers_1.PackingWorksheetController(tx, domain, user);
307
- await packingWSCtrl.generatePackingWorksheet(releaseGoodNo);
308
- }
309
- else {
310
- // Find Existing Loading Worksheet if any
311
- let existLoadingWorksheet = await tx.getRepository(entities_1.Worksheet).findOne({
312
- where: {
313
- releaseGood,
314
- type: constants_1.WORKSHEET_TYPE.LOADING,
315
- status: constants_1.WORKSHEET_STATUS.DEACTIVATED
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.generateLoadingWorksheet(releaseGoodNo, pickedTargetInventories);
322
- if (!((_a = loadingWorksheet.worksheetDetails) === null || _a === void 0 ? void 0 : _a.length)) {
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
- else {
330
- const loadingWSCtrl = new controllers_1.LoadingWorksheetController(tx, domain, user);
331
- let loadingWorksheet = await loadingWSCtrl.updateLoadingWorksheet(releaseGoodNo, pickedTargetInventories, existLoadingWorksheet);
332
- if (!((_b = loadingWorksheet.worksheetDetails) === null || _b === void 0 ? void 0 : _b.length)) {
333
- loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id);
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
- else {
341
- //update inventories obsolete to true
342
- await tx.getRepository(warehouse_base_1.Inventory).update({ id: (0, typeorm_1.In)(foundObsoleteInventories) }, { obsolete: true });
343
- foundObsoleteInventories = foundObsoleteInventories
344
- .map(inv => {
345
- return "'" + inv.trim() + "'";
346
- })
347
- .join(',');
348
- //update any orders that is assigned with obsolete inventories
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
- await tx.getRepository(entities_1.Worksheet).query(`
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
- return true;
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;