@things-factory/worksheet-base 4.1.7 → 4.1.8

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.
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateMultipleReleaseGoodWorksheetResolver = void 0;
4
+ const typeorm_1 = require("typeorm");
4
5
  const generate_release_good_worksheet_1 = require("./generate-release-good-worksheet");
5
6
  exports.generateMultipleReleaseGoodWorksheetResolver = {
6
7
  async generateMultipleReleaseGoodWorksheet(_, { releaseGoodNos }, context) {
7
8
  const { tx, domain, user } = context.state;
8
9
  for (let idx = 0; idx < releaseGoodNos.length; idx++) {
9
- await (0, generate_release_good_worksheet_1.generatePickingWorksheet)(tx, domain, user, releaseGoodNos[idx]);
10
+ await (0, typeorm_1.getManager)().transaction(async (txMgr) => {
11
+ await (0, generate_release_good_worksheet_1.generatePickingWorksheet)(txMgr, domain, user, releaseGoodNos[idx]);
12
+ });
10
13
  }
11
14
  return true;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate-multiple-release-good-worksheet.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts"],"names":[],"mappings":";;;AASA,uFAA4E;AAE/D,QAAA,4CAA4C,GAAG;IAC1D,KAAK,CAAC,oCAAoC,CAAC,CAAM,EAAE,EAAE,cAAc,EAAE,EAAE,OAAY;QACjF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACpD,MAAM,IAAA,0DAAwB,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;SACtE;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"generate-multiple-release-good-worksheet.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AASnD,uFAA4E;AAE/D,QAAA,4CAA4C,GAAG;IAC1D,KAAK,CAAC,oCAAoC,CAAC,CAAM,EAAE,EAAE,cAAc,EAAE,EAAE,OAAY;QACjF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACpD,MAAM,IAAA,oBAAU,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;gBAC3C,MAAM,IAAA,0DAAwB,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1E,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generatePickingWorksheetDetail = exports.generatePickingWorksheet = exports.generateReleaseGoodWorksheetResolver = void 0;
4
+ const sales_base_1 = require("@things-factory/sales-base");
5
+ const setting_base_1 = require("@things-factory/setting-base");
4
6
  const controllers_1 = require("../../../../controllers/");
7
+ const entities_1 = require("../../../../entities");
8
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
5
9
  exports.generateReleaseGoodWorksheetResolver = {
6
10
  async generateReleaseGoodWorksheet(_, { releaseGoodNo }, context) {
7
11
  const { tx, domain, user } = context.state;
@@ -9,8 +13,49 @@ exports.generateReleaseGoodWorksheetResolver = {
9
13
  }
10
14
  };
11
15
  async function generatePickingWorksheet(tx, domain, user, releaseGoodNo) {
12
- const worksheetController = new controllers_1.PickingWorksheetController(tx, domain, user);
13
- return await worksheetController.generatePickingWorksheet(releaseGoodNo);
16
+ try {
17
+ const worksheetController = new controllers_1.PickingWorksheetController(tx, domain, user);
18
+ let releaseGood = await worksheetController.findRefOrder(sales_base_1.ReleaseGood, {
19
+ domain: domain,
20
+ name: releaseGoodNo,
21
+ status: sales_base_1.ORDER_STATUS.PENDING_WORKSHEET
22
+ });
23
+ let worksheet = new entities_1.Worksheet();
24
+ const directReleaseOrder = await tx.getRepository(setting_base_1.Setting).findOne({
25
+ where: { domain, category: 'id-rule', name: 'enable-direct-b2c-release-order' }
26
+ });
27
+ if (releaseGood.type == 'b2c' && directReleaseOrder && directReleaseOrder.value.toLowerCase() == 'true') {
28
+ const inventoryUtil = new warehouse_base_1.InventoryUtil(tx, domain, user);
29
+ let orderInventories = await tx.getRepository(sales_base_1.OrderInventory).find({
30
+ where: { domain, releaseGood },
31
+ relations: ['inventory']
32
+ });
33
+ for (let idx = 0; idx < orderInventories.length; idx++) {
34
+ let orderInventory = orderInventories[idx];
35
+ if (orderInventory.releaseQty <= 0 || (orderInventory.uomValue != null && orderInventory.uomValue <= 0)) {
36
+ throw new Error(`Invalid data for ${releaseGoodNo}. Please contact support.`);
37
+ }
38
+ orderInventory.uomValue = orderInventory.uomValue > 0 ? orderInventory.uomValue : 0;
39
+ let inventory = await tx.getRepository(warehouse_base_1.Inventory).findOne({ where: { id: orderInventory.inventory.id } });
40
+ await inventoryUtil.transactionInventory({
41
+ id: inventory.id,
42
+ qty: inventory.qty - orderInventory.releaseQty,
43
+ uomValue: Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100,
44
+ lockedQty: inventory.lockedQty - orderInventory.releaseQty,
45
+ lockedUomValue: Math.round((inventory.lockedUomValue - orderInventory.releaseUomValue) * 100) / 100
46
+ }, releaseGood, -orderInventory.releaseQty, -orderInventory.releaseUomValue, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.DIRECT_DEDUCTION);
47
+ await tx.getRepository(sales_base_1.OrderInventory).save({ id: orderInventory.id, status: sales_base_1.ORDER_INVENTORY_STATUS.TERMINATED });
48
+ }
49
+ await tx.getRepository(sales_base_1.ReleaseGood).save({ id: releaseGood.id, status: sales_base_1.ORDER_STATUS.DONE });
50
+ }
51
+ else {
52
+ worksheet = await worksheetController.generatePickingWorksheet(releaseGoodNo);
53
+ }
54
+ return worksheet;
55
+ }
56
+ catch (error) {
57
+ return new entities_1.Worksheet();
58
+ }
14
59
  }
15
60
  exports.generatePickingWorksheet = generatePickingWorksheet;
16
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"generate-release-good-worksheet.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts"],"names":[],"mappings":";;;AAMA,0DAAqE;AAGxD,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,EAAE,aAAa,EAAE,EAAE,OAAY;QACxE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,OAAO,MAAM,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACxE,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,wBAAwB,CAC5C,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,aAAqB;IAErB,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,OAAO,MAAM,mBAAmB,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAA;AAC1E,CAAC;AARD,4DAQC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,8BAA8B,CAClD,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,SAAoB,EACpB,eAA0C;IAE1C,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,OAAO,MAAM,mBAAmB,CAAC,8BAA8B,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AAC7F,CAAC;AATD,wEASC"}
1
+ {"version":3,"file":"generate-release-good-worksheet.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "4.1.7",
3
+ "version": "4.1.8",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -32,13 +32,13 @@
32
32
  "@things-factory/integration-marketplace": "^4.1.6",
33
33
  "@things-factory/integration-sellercraft": "^4.1.6",
34
34
  "@things-factory/integration-sftp": "^4.1.6",
35
- "@things-factory/marketplace-base": "^4.1.6",
35
+ "@things-factory/marketplace-base": "^4.1.8",
36
36
  "@things-factory/notification": "^4.1.6",
37
- "@things-factory/sales-base": "^4.1.7",
37
+ "@things-factory/sales-base": "^4.1.8",
38
38
  "@things-factory/setting-base": "^4.1.6",
39
39
  "@things-factory/shell": "^4.1.6",
40
40
  "@things-factory/transport-base": "^4.1.6",
41
- "@things-factory/warehouse-base": "^4.1.6"
41
+ "@things-factory/warehouse-base": "^4.1.8"
42
42
  },
43
- "gitHead": "5e68e258a7ec97f4c92a11fe8aa88088a4c80ea6"
43
+ "gitHead": "a2c80a6ae7adc79c5779b5ef9173c66d5a5d89b9"
44
44
  }
@@ -1,4 +1,4 @@
1
- import { EntityManager } from 'typeorm'
1
+ import { EntityManager, getManager } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
4
  import { OrderInventory } from '@things-factory/sales-base'
@@ -14,7 +14,9 @@ export const generateMultipleReleaseGoodWorksheetResolver = {
14
14
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
15
15
 
16
16
  for (let idx = 0; idx < releaseGoodNos.length; idx++) {
17
- await generatePickingWorksheet(tx, domain, user, releaseGoodNos[idx])
17
+ await getManager().transaction(async txMgr => {
18
+ await generatePickingWorksheet(txMgr, domain, user, releaseGoodNos[idx])
19
+ });
18
20
  }
19
21
 
20
22
  return true
@@ -1,12 +1,19 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
- import { OrderInventory } from '@things-factory/sales-base'
4
+ import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
5
5
  import { Domain } from '@things-factory/shell'
6
+ import { PartnerSetting, Setting } from '@things-factory/setting-base'
6
7
 
7
8
  import { PickingWorksheetController } from '../../../../controllers/'
8
9
  import { Worksheet, WorksheetDetail } from '../../../../entities'
9
10
 
11
+ import {
12
+ Inventory,
13
+ InventoryUtil,
14
+ INVENTORY_TRANSACTION_TYPE
15
+ } from '@things-factory/warehouse-base'
16
+
10
17
  export const generateReleaseGoodWorksheetResolver = {
11
18
  async generateReleaseGoodWorksheet(_: any, { releaseGoodNo }, context: any) {
12
19
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
@@ -20,8 +27,68 @@ export async function generatePickingWorksheet(
20
27
  user: User,
21
28
  releaseGoodNo: string
22
29
  ): Promise<Worksheet> {
23
- const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
24
- return await worksheetController.generatePickingWorksheet(releaseGoodNo)
30
+ try {
31
+ const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
32
+
33
+ let releaseGood: ReleaseGood = await worksheetController.findRefOrder(
34
+ ReleaseGood,
35
+ {
36
+ domain: domain,
37
+ name: releaseGoodNo,
38
+ status: ORDER_STATUS.PENDING_WORKSHEET
39
+ }
40
+ )
41
+
42
+ let worksheet: Worksheet = new Worksheet()
43
+
44
+ const directReleaseOrder: Setting = await tx.getRepository(Setting).findOne({
45
+ where: { domain, category: 'id-rule', name: 'enable-direct-b2c-release-order' }
46
+ })
47
+
48
+ if (releaseGood.type == 'b2c' && directReleaseOrder && directReleaseOrder.value.toLowerCase() == 'true') {
49
+ const inventoryUtil = new InventoryUtil(tx, domain, user)
50
+
51
+ let orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({
52
+ where: { domain, releaseGood },
53
+ relations: ['inventory']
54
+ })
55
+
56
+ for (let idx = 0; idx < orderInventories.length; idx++) {
57
+ let orderInventory = orderInventories[idx]
58
+ if (orderInventory.releaseQty <= 0 || (orderInventory.uomValue != null && orderInventory.uomValue <= 0)) {
59
+ throw new Error(`Invalid data for ${releaseGoodNo}. Please contact support.`);
60
+ }
61
+ orderInventory.uomValue = orderInventory.uomValue > 0 ? orderInventory.uomValue : 0
62
+
63
+ let inventory: Inventory = await tx.getRepository(Inventory).findOne({ where: { id: orderInventory.inventory.id } })
64
+
65
+ await inventoryUtil.transactionInventory(
66
+ {
67
+ id: inventory.id,
68
+ qty: inventory.qty - orderInventory.releaseQty,
69
+ uomValue: Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100,
70
+ lockedQty: inventory.lockedQty - orderInventory.releaseQty,
71
+ lockedUomValue: Math.round((inventory.lockedUomValue - orderInventory.releaseUomValue) * 100) / 100
72
+ },
73
+ releaseGood,
74
+ - orderInventory.releaseQty,
75
+ - orderInventory.releaseUomValue,
76
+ INVENTORY_TRANSACTION_TYPE.DIRECT_DEDUCTION
77
+ )
78
+
79
+ await tx.getRepository(OrderInventory).save({ id: orderInventory.id, status: ORDER_INVENTORY_STATUS.TERMINATED })
80
+ }
81
+
82
+ await tx.getRepository(ReleaseGood).save({ id: releaseGood.id, status: ORDER_STATUS.DONE })
83
+
84
+ } else {
85
+ worksheet = await worksheetController.generatePickingWorksheet(releaseGoodNo)
86
+ }
87
+
88
+ return worksheet
89
+ } catch (error) {
90
+ return new Worksheet()
91
+ }
25
92
  }
26
93
 
27
94
  /**