@things-factory/sales-base 4.3.449 → 4.3.452

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 (55) hide show
  1. package/dist-server/constants/order.js +3 -1
  2. package/dist-server/constants/order.js.map +1 -1
  3. package/dist-server/service/draft-release-good/draft-release-good-create.js +587 -0
  4. package/dist-server/service/draft-release-good/draft-release-good-create.js.map +1 -0
  5. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +3 -232
  6. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  7. package/dist-server/service/draft-release-good/draft-release-good-query.js +59 -28
  8. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  9. package/dist-server/service/draft-release-good/draft-release-good-type.js +33 -1
  10. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
  11. package/dist-server/service/draft-release-good/draft-release-good.js +2 -7
  12. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  13. package/dist-server/service/draft-release-good/index.js +4 -2
  14. package/dist-server/service/draft-release-good/index.js.map +1 -1
  15. package/dist-server/service/order-vas/order-vas-mutation.js +46 -23
  16. package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
  17. package/dist-server/service/order-vas/order-vas-query.js +34 -0
  18. package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
  19. package/dist-server/service/order-vas/order-vas-types.js +4 -0
  20. package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
  21. package/dist-server/service/order-vas/order-vas.js +22 -1
  22. package/dist-server/service/order-vas/order-vas.js.map +1 -1
  23. package/dist-server/service/order-vas-item/order-vas-item-type.js +8 -0
  24. package/dist-server/service/order-vas-item/order-vas-item-type.js.map +1 -1
  25. package/dist-server/service/order-vas-item/order-vas-item.js +5 -0
  26. package/dist-server/service/order-vas-item/order-vas-item.js.map +1 -1
  27. package/dist-server/service/release-good/release-good-mutation.js +5 -3
  28. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  29. package/dist-server/service/release-good/release-good-query.js +4 -1
  30. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  31. package/dist-server/service/release-good/release-good.js +9 -0
  32. package/dist-server/service/release-good/release-good.js.map +1 -1
  33. package/dist-server/service/vas/vas-mutation.js +5 -1
  34. package/dist-server/service/vas/vas-mutation.js.map +1 -1
  35. package/dist-server/utils/inventory-util.js +5 -3
  36. package/dist-server/utils/inventory-util.js.map +1 -1
  37. package/package.json +15 -15
  38. package/server/constants/order.ts +3 -1
  39. package/server/service/draft-release-good/draft-release-good-create.ts +715 -0
  40. package/server/service/draft-release-good/draft-release-good-mutation.ts +36 -288
  41. package/server/service/draft-release-good/draft-release-good-query.ts +109 -89
  42. package/server/service/draft-release-good/draft-release-good-type.ts +28 -2
  43. package/server/service/draft-release-good/draft-release-good.ts +2 -8
  44. package/server/service/draft-release-good/index.ts +4 -2
  45. package/server/service/order-vas/order-vas-mutation.ts +57 -29
  46. package/server/service/order-vas/order-vas-query.ts +43 -1
  47. package/server/service/order-vas/order-vas-types.ts +5 -8
  48. package/server/service/order-vas/order-vas.ts +19 -10
  49. package/server/service/order-vas-item/order-vas-item-type.ts +6 -0
  50. package/server/service/order-vas-item/order-vas-item.ts +4 -0
  51. package/server/service/release-good/release-good-mutation.ts +8 -2
  52. package/server/service/release-good/release-good-query.ts +7 -2
  53. package/server/service/release-good/release-good.ts +8 -0
  54. package/server/service/vas/vas-mutation.ts +4 -1
  55. package/server/utils/inventory-util.ts +29 -6
@@ -71,6 +71,7 @@ exports.ORDER_PRODUCT_STATUS = {
71
71
  READY_TO_COLLECT: 'READY_TO_COLLECT',
72
72
  READY_TO_DELIVER: 'READY_TO_DELIVER',
73
73
  READY_TO_UNLOAD: 'READY_TO_UNLOAD',
74
+ PARTIAL_RELEASED: 'PARTIAL RELEASED',
74
75
  PENDING_APPROVAL: 'PENDING_APPROVAL',
75
76
  PENDING_ASSIGN: 'PENDING_ASSIGN',
76
77
  PENDING_WORKSHEET: 'PENDING_WORKSHEET',
@@ -198,7 +199,8 @@ exports.DRAFT_RELEASE_ORDER_STATUS = {
198
199
  INSUFFICIENT: 'INSUFFICIENT',
199
200
  SUBMITTED: 'SUBMITTED',
200
201
  CANCELLED: 'CANCELLED',
201
- TRANSFER: 'TRANSFER'
202
+ TRANSFER: 'TRANSFER',
203
+ PARTIAL_RELEASED: 'PARTIAL RELEASED'
202
204
  };
203
205
  exports.ORDER_SOURCE_TYPE = {
204
206
  XILNEX_PO: 'XILNEX_PO',
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../server/constants/order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../server/constants/order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,587 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.generatePartialReleaseGoods = exports.generateReleaseGoods = exports.DraftReleaseGoodCreate = void 0;
16
+ const type_graphql_1 = require("type-graphql");
17
+ const typeorm_1 = require("typeorm");
18
+ const biz_base_1 = require("@things-factory/biz-base");
19
+ const env_1 = require("@things-factory/env");
20
+ const product_base_1 = require("@things-factory/product-base");
21
+ const setting_base_1 = require("@things-factory/setting-base");
22
+ // import { Location } from '@things-factory/warehouse-base'
23
+ const __1 = require("../");
24
+ const constants_1 = require("../../constants");
25
+ const errors_1 = require("../../errors");
26
+ const utils_1 = require("../../utils");
27
+ const draft_release_good_type_1 = require("./draft-release-good-type");
28
+ const release_good_mutation_1 = require("../release-good/release-good-mutation");
29
+ let DraftReleaseGoodCreate = class DraftReleaseGoodCreate {
30
+ async generateReleaseGoodsfromDraft(context, releaseInfo) {
31
+ let results = [];
32
+ try {
33
+ const _generatePartialReleaseGoodsRecord = releaseInfo.filter(item => item.releaseType === 'partial' && item.id !== '');
34
+ const _generateReleaseGoodsRecord = releaseInfo.filter(item => item.releaseType === 'release' && item.id !== '');
35
+ if (_generateReleaseGoodsRecord.length > 0) {
36
+ const result = await generateReleaseGoods(_generateReleaseGoodsRecord, context);
37
+ results.push(...result);
38
+ }
39
+ if (_generatePartialReleaseGoodsRecord.length > 0) {
40
+ const result = await generatePartialReleaseGoods(_generatePartialReleaseGoodsRecord, context);
41
+ results.push(...result);
42
+ }
43
+ return results;
44
+ }
45
+ catch (e) {
46
+ env_1.logger.error(e);
47
+ throw new Error('Failed Released Draft Orders');
48
+ }
49
+ }
50
+ };
51
+ __decorate([
52
+ (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "mutation")'),
53
+ (0, type_graphql_1.Directive)('@transaction'),
54
+ (0, type_graphql_1.Mutation)(returns => [draft_release_good_type_1.SuccessReleasedDraftOrder], {
55
+ nullable: true,
56
+ description: 'To generate Release Goods from Draft'
57
+ }),
58
+ __param(0, (0, type_graphql_1.Ctx)()),
59
+ __param(1, (0, type_graphql_1.Arg)('releaseInfo', type => [__1.DraftReleaseGoodInfos])),
60
+ __metadata("design:type", Function),
61
+ __metadata("design:paramtypes", [Object, Array]),
62
+ __metadata("design:returntype", Promise)
63
+ ], DraftReleaseGoodCreate.prototype, "generateReleaseGoodsfromDraft", null);
64
+ DraftReleaseGoodCreate = __decorate([
65
+ (0, type_graphql_1.Resolver)(__1.DraftReleaseGood)
66
+ ], DraftReleaseGoodCreate);
67
+ exports.DraftReleaseGoodCreate = DraftReleaseGoodCreate;
68
+ async function generateReleaseGoods(_generateReleaseGoodsRecord, context) {
69
+ const { domain, user, tx } = context.state;
70
+ try {
71
+ let ids = []; // Initialize the ids array outside the loop
72
+ ids = _generateReleaseGoodsRecord.map(item => item.id);
73
+ let releasedOrders = [];
74
+ const updatableDraftOrders = await tx.getRepository(__1.DraftReleaseGood).find({
75
+ where: {
76
+ domain,
77
+ id: (0, typeorm_1.In)(ids),
78
+ status: (0, typeorm_1.In)([constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT, constants_1.DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED])
79
+ },
80
+ order: {
81
+ createdAt: 'ASC'
82
+ },
83
+ relations: [
84
+ 'orderProducts',
85
+ 'orderProducts.product',
86
+ 'orderProducts.productBundle',
87
+ 'orderProducts.productBundle.productBundleSettings',
88
+ 'orderProducts.productBundle.productBundleSettings.product',
89
+ 'orderProducts.productBundle.productBundleSettings.productDetail',
90
+ 'shippingOrder',
91
+ 'bizplace',
92
+ 'bizplace.domain',
93
+ 'domain',
94
+ 'creator',
95
+ 'updater',
96
+ 'lastMileDelivery'
97
+ ]
98
+ });
99
+ let failReleaseOrder = [];
100
+ if (updatableDraftOrders.length > 0) {
101
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
102
+ const roNoSetting = await settingRepo.findOne({
103
+ where: {
104
+ domain,
105
+ name: constants_1.ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE
106
+ }
107
+ });
108
+ for (let index = 0; index < updatableDraftOrders.length; index++) {
109
+ await (0, typeorm_1.getConnection)().transaction(async (tx) => {
110
+ var _a;
111
+ const draftOrder = updatableDraftOrders[index];
112
+ let foundPermittedBizplace;
113
+ let companyBizplace;
114
+ if ((_a = draftOrder === null || draftOrder === void 0 ? void 0 : draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
115
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(draftOrder.bizplace.id, {
116
+ relations: ['company', 'company.domain']
117
+ });
118
+ const companyDomain = foundPermittedBizplace.company.domain;
119
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
120
+ }
121
+ else {
122
+ return false;
123
+ }
124
+ const bizplaces = [foundPermittedBizplace, companyBizplace];
125
+ let loggerJson = JSON.stringify({ refNo: draftOrder.refNo, bizplaceId: draftOrder.bizplace.id, domain });
126
+ try {
127
+ console.time(`creating_order:${loggerJson}`);
128
+ draftOrder.orderProducts = draftOrder.orderProducts.filter(op => op.status == 'DRAFT');
129
+ let productIds = [];
130
+ for (let item of draftOrder.orderProducts) {
131
+ if (item && item.product) {
132
+ productIds.push(item.product.id);
133
+ }
134
+ if (item && item.productBundle) {
135
+ for (let bundleSetting of item.productBundle.productBundleSettings) {
136
+ productIds.push(bundleSetting.product.id);
137
+ }
138
+ }
139
+ }
140
+ let productInventory = await utils_1.InventoryUtil.bizplaceProductInventory(bizplaces, {
141
+ filters: [
142
+ {
143
+ name: 'productId',
144
+ operator: 'in',
145
+ value: productIds
146
+ }
147
+ ]
148
+ }, context, tx);
149
+ draftOrder.orderProducts = draftOrder.orderProducts.map(itm => {
150
+ let foundProductInv;
151
+ if (itm.product) {
152
+ foundProductInv = productInventory.items.find(i => {
153
+ var _a;
154
+ return (i.productDetailId == (itm === null || itm === void 0 ? void 0 : itm.productDetailId) || i.productId == ((_a = itm === null || itm === void 0 ? void 0 : itm.productBundle) === null || _a === void 0 ? void 0 : _a.id)) &&
155
+ itm.releaseQty <= i.remainQty;
156
+ });
157
+ if (!foundProductInv) {
158
+ failReleaseOrder.push(draftOrder.name);
159
+ }
160
+ }
161
+ else {
162
+ itm.productBundle.productBundleSettings.map(pbs => {
163
+ foundProductInv = productInventory.items.find(i => {
164
+ var _a;
165
+ return (i.productDetailId == (pbs === null || pbs === void 0 ? void 0 : pbs.productDetail.id) || i.productId == ((_a = pbs === null || pbs === void 0 ? void 0 : pbs.product) === null || _a === void 0 ? void 0 : _a.id)) &&
166
+ itm.releaseQty <= i.remainQty;
167
+ });
168
+ });
169
+ }
170
+ return Object.assign(Object.assign({}, itm), { releaseUomValue: (foundProductInv.remainUomValue / foundProductInv.remainQty) * itm.releaseQty, status: foundProductInv ? 'suffice' : 'insufficient' });
171
+ });
172
+ let insufficient = draftOrder.orderProducts.find(op => op.status == 'insufficient');
173
+ if (!insufficient) {
174
+ //create RO
175
+ let releaseGood = Object.assign({}, draftOrder);
176
+ delete releaseGood.id;
177
+ delete releaseGood.name;
178
+ delete releaseGood.createdAt;
179
+ delete releaseGood.createdBy;
180
+ delete releaseGood.updatedAt;
181
+ delete releaseGood.updatedBy;
182
+ let orderInventories = [];
183
+ for (let index = 0; index < draftOrder.orderProducts.length; index++) {
184
+ const itm = draftOrder.orderProducts[index];
185
+ let data = [];
186
+ if (itm.productBundle) {
187
+ let bundle = await tx.getRepository(product_base_1.ProductBundle).findOne({
188
+ where: { id: itm.productBundle.id },
189
+ relations: [
190
+ 'productBundleSettings',
191
+ 'productBundleSettings.productDetail',
192
+ 'productBundleSettings.product'
193
+ ]
194
+ });
195
+ for (let index2 = 0; index2 < bundle.productBundleSettings.length; index2++) {
196
+ const objProductBundleSetting = bundle.productBundleSettings[index2];
197
+ data.push({
198
+ sku: objProductBundleSetting.product.sku,
199
+ packingType: objProductBundleSetting.productDetail.packingType,
200
+ packingSize: objProductBundleSetting.productDetail.packingSize,
201
+ uom: objProductBundleSetting.productDetail.uom,
202
+ releaseQty: objProductBundleSetting.bundleQty * itm.releaseQty,
203
+ assignedQty: undefined,
204
+ assignedUomValue: undefined,
205
+ releaseUomValue: objProductBundleSetting.bundleQty * itm.releaseQty * itm.releaseUomValue
206
+ });
207
+ }
208
+ }
209
+ else {
210
+ data = [
211
+ {
212
+ sku: itm.product.sku,
213
+ packingType: itm.packingType,
214
+ packingSize: itm.packingSize,
215
+ uom: itm.uom,
216
+ releaseQty: itm.releaseQty,
217
+ assignedQty: undefined,
218
+ assignedUomValue: undefined,
219
+ releaseUomValue: itm.releaseUomValue
220
+ }
221
+ ];
222
+ }
223
+ data.forEach(data => {
224
+ let existingOI = orderInventories.find(itm => itm.sku == data.sku &&
225
+ itm.packingType == data.packingType &&
226
+ itm.packingSize == data.packingSize &&
227
+ itm.uom == data.uom);
228
+ if (existingOI) {
229
+ existingOI.releaseQty = existingOI.releaseQty + data.releaseQty;
230
+ existingOI.releaseUomValue = existingOI.releaseUomValue + data.uomValue;
231
+ existingOI.uomValue = existingOI.uomValue + data.uomValue;
232
+ }
233
+ else {
234
+ orderInventories.push(Object.assign(Object.assign({}, data), { orderProduct: itm }));
235
+ }
236
+ });
237
+ }
238
+ await (0, typeorm_1.getConnection)().transaction(async (tx) => {
239
+ var _a;
240
+ let availableItems = await (0, __1.bulkReleaseGoodsAvailableItemsFunction)(orderInventories, draftOrder.bizplace.id, context, tx);
241
+ if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty))
242
+ throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
243
+ // update orderInventories if availableItems are valid
244
+ releaseGood.noOfItems = orderInventories.length;
245
+ releaseGood.orderInventories = availableItems.map(itm => {
246
+ return Object.assign(Object.assign({}, itm), { releaseQty: itm.releaseQty, releaseUomValue: itm.releaseUomValue, uomValue: itm.uomValue });
247
+ });
248
+ let createdReleaseGood = await (0, release_good_mutation_1.bulkGenerateReleaseGood)(releaseGood, releaseGood.bizplace.id, roNoSetting, domain, user, draftOrder, tx);
249
+ await tx
250
+ .getRepository(__1.DraftReleaseGood)
251
+ .update({ id: draftOrder.id }, { status: constants_1.DRAFT_RELEASE_ORDER_STATUS.SUBMITTED });
252
+ const directReceiveSetting = await tx.getRepository(setting_base_1.Setting).findOne({
253
+ where: { domain, category: 'id-rule', name: 'enable-direct-receive-release-order' }
254
+ });
255
+ const partnerDirectReceiveSetting = await tx.getRepository(setting_base_1.PartnerSetting).findOne({
256
+ where: { setting: directReceiveSetting, domain, partnerDomain: (_a = draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.domain }
257
+ });
258
+ let settingValue;
259
+ if (!isNaN(partnerDirectReceiveSetting === null || partnerDirectReceiveSetting === void 0 ? void 0 : partnerDirectReceiveSetting.value) &&
260
+ !isNaN(parseFloat(partnerDirectReceiveSetting === null || partnerDirectReceiveSetting === void 0 ? void 0 : partnerDirectReceiveSetting.value))) {
261
+ settingValue = parseFloat(partnerDirectReceiveSetting.value);
262
+ }
263
+ else {
264
+ settingValue = parseFloat(directReceiveSetting.value);
265
+ }
266
+ createdReleaseGood = await (0, release_good_mutation_1.confirmReleaseGood)(createdReleaseGood.name, context, tx);
267
+ if (settingValue > 1) {
268
+ createdReleaseGood = await (0, release_good_mutation_1.receiveReleaseGood)(createdReleaseGood.name, context, tx);
269
+ }
270
+ });
271
+ }
272
+ else {
273
+ if (draftOrder.orderProducts.every(op => op.id === (insufficient === null || insufficient === void 0 ? void 0 : insufficient.id))) {
274
+ failReleaseOrder.push(draftOrder === null || draftOrder === void 0 ? void 0 : draftOrder.name);
275
+ }
276
+ }
277
+ }
278
+ catch (e) {
279
+ env_1.logger.error(`draft-release-good-mutation[generateReleaseGoodsFromDraft:${loggerJson}]: ${e === null || e === void 0 ? void 0 : e.message}`);
280
+ }
281
+ finally {
282
+ console.timeEnd(`creating_order:${loggerJson}`);
283
+ }
284
+ });
285
+ }
286
+ }
287
+ releasedOrders = updatableDraftOrders.filter(drg => !drg.name.includes(failReleaseOrder));
288
+ releasedOrders = releasedOrders.map(item => {
289
+ return {
290
+ draftName: item.name
291
+ };
292
+ });
293
+ return releasedOrders;
294
+ }
295
+ catch (e) {
296
+ env_1.logger.error(`draft-release-good-mutation[generateReleaseGoodsFromDraft]: ${e === null || e === void 0 ? void 0 : e.message}`);
297
+ }
298
+ }
299
+ exports.generateReleaseGoods = generateReleaseGoods;
300
+ async function generatePartialReleaseGoods(_generatePartialReleaseGoodsRecord, context) {
301
+ const { domain, user, tx } = context.state;
302
+ try {
303
+ let ids = [];
304
+ ids = _generatePartialReleaseGoodsRecord.map(item => item.id);
305
+ const selectedStatus = [
306
+ constants_1.DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED,
307
+ constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT,
308
+ constants_1.DRAFT_RELEASE_ORDER_STATUS.TRANSFER
309
+ ];
310
+ const value = _generatePartialReleaseGoodsRecord[0];
311
+ const updatableDraftOrders = await tx.getRepository(__1.DraftReleaseGood).find({
312
+ where: {
313
+ domain,
314
+ id: (0, typeorm_1.In)(ids),
315
+ status: (0, typeorm_1.In)(selectedStatus)
316
+ },
317
+ order: {
318
+ createdAt: 'ASC',
319
+ status: 'ASC'
320
+ },
321
+ relations: [
322
+ 'orderProducts',
323
+ 'orderProducts.product',
324
+ 'orderProducts.productDetail',
325
+ 'orderProducts.productBundle',
326
+ 'shippingOrder',
327
+ 'bizplace',
328
+ 'bizplace.domain',
329
+ 'domain',
330
+ 'creator',
331
+ 'updater',
332
+ 'lastMileDelivery'
333
+ ]
334
+ });
335
+ if (updatableDraftOrders.length > 0) {
336
+ // let createdReleaseGoods: ReleaseGood[] = []
337
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
338
+ const roNoSetting = await settingRepo.findOne({
339
+ where: {
340
+ domain,
341
+ name: constants_1.ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE
342
+ }
343
+ });
344
+ for (let draftOrder of updatableDraftOrders) {
345
+ await (0, typeorm_1.getConnection)().transaction(async (tx) => {
346
+ var _a;
347
+ let foundPermittedBizplace;
348
+ let companyBizplace;
349
+ //remove op productBundle as there no support for partial release
350
+ if (draftOrder.orderProducts.some(itm => !itm.product)) {
351
+ draftOrder.orderProducts = draftOrder.orderProducts.filter(itm => itm.product);
352
+ }
353
+ if ((_a = draftOrder === null || draftOrder === void 0 ? void 0 : draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
354
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(draftOrder.bizplace.id, {
355
+ relations: ['company', 'company.domain']
356
+ });
357
+ const companyDomain = foundPermittedBizplace.company.domain;
358
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
359
+ }
360
+ else {
361
+ return false;
362
+ }
363
+ const bizplaces = [foundPermittedBizplace, companyBizplace];
364
+ let loggerJson = JSON.stringify({ refNo: draftOrder.refNo, bizplaceId: draftOrder.bizplace.id, domain });
365
+ try {
366
+ console.time(`creating_order:${loggerJson}`);
367
+ let productInventory = await utils_1.InventoryUtil.bizplaceProductInventory(bizplaces, {
368
+ filters: [
369
+ {
370
+ name: 'productId',
371
+ operator: 'in',
372
+ value: [
373
+ ...draftOrder.orderProducts
374
+ .filter(itm => itm === null || itm === void 0 ? void 0 : itm.product)
375
+ .map(itm => {
376
+ return itm.product.id;
377
+ }),
378
+ ...draftOrder.orderProducts
379
+ .filter(itm => itm === null || itm === void 0 ? void 0 : itm.productBundle)
380
+ .map(itm => {
381
+ return itm.productBundle.id;
382
+ })
383
+ ]
384
+ }
385
+ ]
386
+ }, context, tx);
387
+ draftOrder.orderProducts = draftOrder.orderProducts.filter(op => op.status == 'DRAFT');
388
+ if (!Array.isArray(draftOrder.orderProducts)) {
389
+ draftOrder.orderProducts = [draftOrder.orderProducts];
390
+ }
391
+ // if (!foundItem)
392
+ let releaseOrderProducts = [];
393
+ draftOrder.orderProducts = draftOrder.orderProducts.map((itm, idx) => {
394
+ let foundProductInv = productInventory.items.find(i => {
395
+ var _a;
396
+ return (i.productDetailId == (itm === null || itm === void 0 ? void 0 : itm.productDetailId) || i.productId == ((_a = itm === null || itm === void 0 ? void 0 : itm.productBundle) === null || _a === void 0 ? void 0 : _a.id)) &&
397
+ !(i.remainQty === 0);
398
+ });
399
+ if (foundProductInv) {
400
+ releaseOrderProducts.push(Object.assign(Object.assign({}, itm), { releaseUomValue: itm.releaseQty > foundProductInv.remainQty
401
+ ? (foundProductInv.remainUomValue / foundProductInv.remainQty) * foundProductInv.remainQty
402
+ : (foundProductInv.remainUomValue / foundProductInv.remainQty) * itm.releaseQty, status: itm.releaseQty <= foundProductInv.remainQty ? 'suffice' : 'partial-release', releaseQty: itm.releaseQty > foundProductInv.remainQty ? foundProductInv.remainQty : itm.releaseQty, newReleaseQty: itm.releaseQty > foundProductInv.remainQty ? itm.releaseQty - foundProductInv.remainQty : 0 }));
403
+ }
404
+ });
405
+ let sufficient = releaseOrderProducts.filter(op => op.status == 'suffice' || op.status == 'partial-release');
406
+ //create RO
407
+ if (sufficient.length > 0) {
408
+ let releaseGood = Object.assign({}, draftOrder);
409
+ delete releaseGood.id;
410
+ delete releaseGood.name;
411
+ delete releaseGood.createdAt;
412
+ delete releaseGood.createdBy;
413
+ delete releaseGood.updatedAt;
414
+ delete releaseGood.updatedBy;
415
+ let orderInventories = [];
416
+ for (let index = 0; index < releaseOrderProducts.length; index++) {
417
+ const itm = releaseOrderProducts[index];
418
+ let data = [];
419
+ if (itm.productBundle) {
420
+ let bundle = await tx.getRepository(product_base_1.ProductBundle).findOne({
421
+ where: { id: itm.productBundle.id },
422
+ relations: [
423
+ 'productBundleSettings',
424
+ 'productBundleSettings.productDetail',
425
+ 'productBundleSettings.product'
426
+ ]
427
+ });
428
+ for (let index2 = 0; index2 < bundle.productBundleSettings.length; index2++) {
429
+ const objProductBundleSetting = bundle.productBundleSettings[index2];
430
+ data.push({
431
+ sku: objProductBundleSetting.product.sku,
432
+ packingType: objProductBundleSetting.productDetail.packingType,
433
+ packingSize: objProductBundleSetting.productDetail.packingSize,
434
+ uom: objProductBundleSetting.productDetail.uom,
435
+ releaseQty: objProductBundleSetting.bundleQty * itm.releaseQty,
436
+ assignedQty: undefined,
437
+ assignedUomValue: undefined,
438
+ releaseUomValue: objProductBundleSetting.bundleQty * itm.releaseQty * itm.releaseUomValue
439
+ });
440
+ }
441
+ }
442
+ else {
443
+ data = [
444
+ {
445
+ sku: itm.product.sku,
446
+ packingType: itm.packingType,
447
+ packingSize: itm.packingSize,
448
+ uom: itm.uom,
449
+ releaseQty: itm.releaseQty,
450
+ assignedQty: undefined,
451
+ assignedUomValue: undefined,
452
+ releaseUomValue: itm.releaseUomValue
453
+ }
454
+ ];
455
+ }
456
+ data.forEach(data => {
457
+ let existingOI = orderInventories.find(itm => itm.sku == data.sku &&
458
+ itm.packingType == data.packingType &&
459
+ itm.packingSize == data.packingSize &&
460
+ itm.uom == data.uom);
461
+ if (existingOI) {
462
+ existingOI.releaseQty = existingOI.releaseQty + data.releaseQty;
463
+ existingOI.releaseUomValue = existingOI.releaseUomValue + data.uomValue;
464
+ existingOI.uomValue = existingOI.uomValue + data.uomValue;
465
+ }
466
+ else {
467
+ orderInventories.push(Object.assign(Object.assign({}, data), { orderProduct: itm }));
468
+ }
469
+ });
470
+ }
471
+ await (0, typeorm_1.getConnection)().transaction(async (tx) => {
472
+ var _a;
473
+ let availableItems = await (0, __1.bulkReleaseGoodsAvailableItemsFunction)(orderInventories, draftOrder.bizplace.id, context, tx);
474
+ // first condition for partial release (values use for generating release good)
475
+ if (draftOrder.id === value.id && value.releaseType === 'partial') {
476
+ releaseGood.orderInventories = availableItems.map(itm => {
477
+ return Object.assign(Object.assign({}, itm), { releaseQty: itm.assignedQty, releaseUomValue: itm.releaseUomValue, uomValue: itm.uomValue });
478
+ });
479
+ }
480
+ else if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty)) {
481
+ throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
482
+ }
483
+ else {
484
+ releaseGood.orderInventories = availableItems.map(itm => {
485
+ return Object.assign(Object.assign({}, itm), { releaseQty: itm.releaseQty, releaseUomValue: itm.releaseUomValue, uomValue: itm.uomValue });
486
+ });
487
+ }
488
+ // update orderInventories if availableItems are valid
489
+ releaseGood.noOfItems = orderInventories.length;
490
+ let createdReleaseGood = await (0, release_good_mutation_1.bulkGenerateReleaseGood)(releaseGood, releaseGood.bizplace.id, roNoSetting, domain, user, draftOrder, tx);
491
+ await tx
492
+ .getRepository(__1.DraftReleaseGood)
493
+ .update({ id: draftOrder.id }, { status: constants_1.DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED });
494
+ const directReceiveSetting = await tx.getRepository(setting_base_1.Setting).findOne({
495
+ where: { domain, category: 'id-rule', name: 'enable-direct-receive-release-order' }
496
+ });
497
+ const partnerDirectReceiveSetting = await tx.getRepository(setting_base_1.PartnerSetting).findOne({
498
+ where: { setting: directReceiveSetting, domain, partnerDomain: (_a = draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.domain }
499
+ });
500
+ let settingValue;
501
+ if (!isNaN(partnerDirectReceiveSetting === null || partnerDirectReceiveSetting === void 0 ? void 0 : partnerDirectReceiveSetting.value) &&
502
+ !isNaN(parseFloat(partnerDirectReceiveSetting === null || partnerDirectReceiveSetting === void 0 ? void 0 : partnerDirectReceiveSetting.value))) {
503
+ settingValue = parseFloat(partnerDirectReceiveSetting.value);
504
+ }
505
+ else {
506
+ settingValue = parseFloat(directReceiveSetting.value);
507
+ }
508
+ createdReleaseGood = await (0, release_good_mutation_1.confirmReleaseGood)(createdReleaseGood.name, context, tx);
509
+ if (settingValue > 1) {
510
+ createdReleaseGood = await (0, release_good_mutation_1.receiveReleaseGood)(createdReleaseGood.name, context, tx);
511
+ for (let value = 0; value < releaseOrderProducts.length; value++) {
512
+ if (releaseOrderProducts[value].status == 'partial-release') {
513
+ let newOrderProduct = releaseOrderProducts.map(item => {
514
+ return Object.assign(Object.assign({}, item), { name: utils_1.OrderNoGenerator.orderProduct(), draftReleaseGood: draftOrder, releaseQty: item.newReleaseQty, bizplace: draftOrder.bizplace, domain: draftOrder.domain, creator: user, updater: user, productDetail: item.productDetail, status: constants_1.ORDER_STATUS.DRAFT });
515
+ });
516
+ delete newOrderProduct[value].id;
517
+ delete newOrderProduct[value].releaseUomValue;
518
+ let generatedOrderProduct = await tx.getRepository(__1.OrderProduct).save(newOrderProduct[value]);
519
+ console.log(generatedOrderProduct);
520
+ }
521
+ }
522
+ }
523
+ });
524
+ }
525
+ }
526
+ catch (e) {
527
+ env_1.logger.error(`draft-release-good-mutation[generateReleaseGoodsFromDraft:${loggerJson}]: ${e === null || e === void 0 ? void 0 : e.message}`);
528
+ }
529
+ finally {
530
+ console.timeEnd(`creating_order:${loggerJson}`);
531
+ }
532
+ });
533
+ }
534
+ }
535
+ const checkDraftOrders = await tx.getRepository(__1.DraftReleaseGood).find({
536
+ where: {
537
+ domain,
538
+ id: (0, typeorm_1.In)(ids),
539
+ status: (0, typeorm_1.In)([constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT, constants_1.DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED])
540
+ },
541
+ relations: ['bizplace', 'domain', 'orderProducts', 'orderProducts.product', 'orderProducts.productBundle']
542
+ });
543
+ let productBundleOrders = [];
544
+ let failReleaseOrder = [];
545
+ let releasedOrders = [];
546
+ for (let index = 0; index < checkDraftOrders.length; index++) {
547
+ const allProductsAssignedOrPartialReleased = checkDraftOrders[index].orderProducts.every(itm => ['ASSIGNED', constants_1.DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED].includes(itm.status));
548
+ if (allProductsAssignedOrPartialReleased) {
549
+ let draftOrderId = checkDraftOrders[index].id;
550
+ await tx
551
+ .getRepository(__1.DraftReleaseGood)
552
+ .update({ id: draftOrderId }, { status: constants_1.DRAFT_RELEASE_ORDER_STATUS.SUBMITTED });
553
+ }
554
+ const commonOrders = checkDraftOrders[index].orderProducts.every(checkOrder => checkOrder.status === 'DRAFT');
555
+ const hasPB = checkDraftOrders[index].orderProducts.some(itm => !itm.product);
556
+ if (commonOrders) {
557
+ failReleaseOrder.push(checkDraftOrders[index].name);
558
+ }
559
+ if (hasPB) {
560
+ productBundleOrders.push(checkDraftOrders[index].name);
561
+ }
562
+ }
563
+ if (failReleaseOrder.length > 0) {
564
+ releasedOrders = checkDraftOrders.filter(order => !failReleaseOrder.includes(order.name));
565
+ releasedOrders = releasedOrders.map(item => {
566
+ return {
567
+ draftName: item.name
568
+ };
569
+ });
570
+ }
571
+ if (productBundleOrders.length > 0) {
572
+ let productBundleOrder = productBundleOrders.map(item => {
573
+ return {
574
+ draftName: item,
575
+ isProductBundle: true
576
+ };
577
+ });
578
+ releasedOrders.push(...productBundleOrder);
579
+ }
580
+ return releasedOrders;
581
+ }
582
+ catch (e) {
583
+ env_1.logger.error(`draft-release-good-mutation[generateReleaseGoodsFromDraft]: ${e === null || e === void 0 ? void 0 : e.message}`);
584
+ }
585
+ }
586
+ exports.generatePartialReleaseGoods = generatePartialReleaseGoods;
587
+ //# sourceMappingURL=draft-release-good-create.js.map