@things-factory/warehouse-base 4.3.46 → 4.3.47

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.
@@ -8,68 +8,72 @@ const inventory_1 = require("../../service/inventory/inventory");
8
8
  const warehouse_controller_1 = require("../warehouse-controller");
9
9
  class SellercraftController extends warehouse_controller_1.WarehouseController {
10
10
  async updateSellercraftStock(sellercraft, inventory) {
11
- const bizplace = await this.trxMgr.getRepository(biz_base_1.Bizplace).findOne({ domain: sellercraft.domain });
12
- let product = inventory.product;
13
- const productDetails = product.productDetails;
14
- let qb = await this.trxMgr.getRepository(inventory_1.Inventory).createQueryBuilder('inv');
15
- qb.leftJoinAndSelect('inv.location', 'loc')
16
- .andWhere('"inv"."domain_id" = :domainId')
17
- .andWhere('"inv"."bizplace_id" = :bizplaceId')
18
- .andWhere('"inv"."product_id" = :productId')
19
- .andWhere('"inv"."status" = :status')
20
- .andWhere('"loc"."type" NOT IN (:...locationTypes)')
21
- .setParameters({
22
- domainId: this.domain.id,
23
- bizplaceId: bizplace.id,
24
- productId: product.id,
25
- status: constants_1.INVENTORY_STATUS.STORED,
26
- locationTypes: [constants_1.LOCATION_TYPE.QUARANTINE, constants_1.LOCATION_TYPE.RESERVE]
27
- });
28
- let inventories = await qb.getMany();
29
- let defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault);
30
- let inventoryTotalQty = 0;
31
- let inventoryTotalLockedQty = 0;
32
- if ((inventories === null || inventories === void 0 ? void 0 : inventories.length) > 0) {
33
- const sellercraftInvs = await Promise.all(inventories.map(async (inventory) => {
34
- const inventoryPackingType = inventory.packingType;
35
- let packingSize = 1;
36
- if (inventoryPackingType !== defaultProductDetail.packingType) {
37
- const unmatchingProductDetail = product.productDetails.find(productDetail => productDetail.packingType === inventoryPackingType);
38
- packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail);
11
+ let sellercraftSetting = sellercraft.sellercraftSetting;
12
+ let disableUpdateStock = (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disableUpdateStock) && (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disableUpdateStock) == 1 ? true : false;
13
+ if (!disableUpdateStock) {
14
+ const bizplace = await this.trxMgr.getRepository(biz_base_1.Bizplace).findOne({ domain: sellercraft.domain });
15
+ let product = inventory.product;
16
+ const productDetails = product.productDetails;
17
+ let qb = await this.trxMgr.getRepository(inventory_1.Inventory).createQueryBuilder('inv');
18
+ qb.leftJoinAndSelect('inv.location', 'loc')
19
+ .andWhere('"inv"."domain_id" = :domainId')
20
+ .andWhere('"inv"."bizplace_id" = :bizplaceId')
21
+ .andWhere('"inv"."product_id" = :productId')
22
+ .andWhere('"inv"."status" = :status')
23
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
24
+ .setParameters({
25
+ domainId: this.domain.id,
26
+ bizplaceId: bizplace.id,
27
+ productId: product.id,
28
+ status: constants_1.INVENTORY_STATUS.STORED,
29
+ locationTypes: [constants_1.LOCATION_TYPE.QUARANTINE, constants_1.LOCATION_TYPE.RESERVE]
30
+ });
31
+ let inventories = await qb.getMany();
32
+ let defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault);
33
+ let inventoryTotalQty = 0;
34
+ let inventoryTotalLockedQty = 0;
35
+ if ((inventories === null || inventories === void 0 ? void 0 : inventories.length) > 0) {
36
+ const sellercraftInvs = await Promise.all(inventories.map(async (inventory) => {
37
+ const inventoryPackingType = inventory.packingType;
38
+ let packingSize = 1;
39
+ if (inventoryPackingType !== defaultProductDetail.packingType) {
40
+ const unmatchingProductDetail = product.productDetails.find(productDetail => productDetail.packingType === inventoryPackingType);
41
+ packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail);
42
+ }
43
+ return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize };
44
+ }));
45
+ inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
46
+ total += currentValue.totalQty;
47
+ return total;
48
+ }, 0);
49
+ inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
50
+ total += currentValue.totalLockedQty;
51
+ return total;
52
+ }, 0);
53
+ }
54
+ const sellercraftInv = [
55
+ {
56
+ sku: product.sku,
57
+ gtin: defaultProductDetail.gtin,
58
+ stock: {
59
+ quantity_total: inventoryTotalQty,
60
+ quantity_reserved: inventoryTotalLockedQty,
61
+ unit_of_measure: 'EA'
62
+ },
63
+ package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
64
+ package_dimensions: {
65
+ length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
66
+ width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
67
+ height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
68
+ }
39
69
  }
40
- return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize };
41
- }));
42
- inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
43
- total += currentValue.totalQty;
44
- return total;
45
- }, 0);
46
- inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
47
- total += currentValue.totalLockedQty;
48
- return total;
49
- }, 0);
70
+ ];
71
+ await integration_sellercraft_1.SellercraftAPI.updateProduct(sellercraft, {
72
+ context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
73
+ accountId: sellercraft.accountId,
74
+ sellercraftInv
75
+ });
50
76
  }
51
- const sellercraftInv = [
52
- {
53
- sku: product.sku,
54
- gtin: defaultProductDetail.gtin,
55
- stock: {
56
- quantity_total: inventoryTotalQty,
57
- quantity_reserved: inventoryTotalLockedQty,
58
- unit_of_measure: 'EA'
59
- },
60
- package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
61
- package_dimensions: {
62
- length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
63
- width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
64
- height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
65
- }
66
- }
67
- ];
68
- await integration_sellercraft_1.SellercraftAPI.updateProduct(sellercraft, {
69
- context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
70
- accountId: sellercraft.accountId,
71
- sellercraftInv
72
- });
73
77
  }
74
78
  }
75
79
  exports.SellercraftController = SellercraftController;
@@ -1 +1 @@
1
- {"version":3,"file":"sellercraft-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/sellercraft-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sellercraft-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/sellercraft-controller.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/warehouse-base",
3
- "version": "4.3.46",
3
+ "version": "4.3.47",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,12 +24,12 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/biz-base": "^4.3.46",
28
- "@things-factory/id-rule-base": "^4.3.46",
29
- "@things-factory/integration-sellercraft": "^4.3.46",
30
- "@things-factory/marketplace-base": "^4.3.46",
31
- "@things-factory/product-base": "^4.3.46",
32
- "@things-factory/setting-base": "^4.3.46"
27
+ "@things-factory/biz-base": "^4.3.47",
28
+ "@things-factory/id-rule-base": "^4.3.47",
29
+ "@things-factory/integration-sellercraft": "^4.3.47",
30
+ "@things-factory/marketplace-base": "^4.3.47",
31
+ "@things-factory/product-base": "^4.3.47",
32
+ "@things-factory/setting-base": "^4.3.47"
33
33
  },
34
- "gitHead": "83ecc645c3cc602bdae8941bc10b8f17b7d6c279"
34
+ "gitHead": "2abf3aa51954ef43fde410c44e854495422e6612"
35
35
  }
@@ -8,83 +8,93 @@ import { WarehouseController } from '../warehouse-controller'
8
8
 
9
9
  export class SellercraftController extends WarehouseController {
10
10
  async updateSellercraftStock(sellercraft: Sellercraft, inventory: Inventory): Promise<void> {
11
- const bizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne({ domain: sellercraft.domain })
11
+ let sellercraftSetting: any = sellercraft.sellercraftSetting
12
+ let disableUpdateStock: boolean =
13
+ sellercraftSetting?.disableUpdateStock && sellercraftSetting?.disableUpdateStock == 1 ? true : false
12
14
 
13
- let product: Product = inventory.product
14
- const productDetails: ProductDetail[] = product.productDetails
15
+ if (!disableUpdateStock) {
16
+ const bizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne({ domain: sellercraft.domain })
15
17
 
16
- let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')
17
- qb.leftJoinAndSelect('inv.location', 'loc')
18
- .andWhere('"inv"."domain_id" = :domainId')
19
- .andWhere('"inv"."bizplace_id" = :bizplaceId')
20
- .andWhere('"inv"."product_id" = :productId')
21
- .andWhere('"inv"."status" = :status')
22
- .andWhere('"loc"."type" NOT IN (:...locationTypes)')
23
- .setParameters({
24
- domainId: this.domain.id,
25
- bizplaceId: bizplace.id,
26
- productId: product.id,
27
- status: INVENTORY_STATUS.STORED,
28
- locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
29
- })
18
+ let product: Product = inventory.product
19
+ const productDetails: ProductDetail[] = product.productDetails
30
20
 
31
- let inventories: Inventory[] = await qb.getMany()
21
+ let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')
22
+ qb.leftJoinAndSelect('inv.location', 'loc')
23
+ .andWhere('"inv"."domain_id" = :domainId')
24
+ .andWhere('"inv"."bizplace_id" = :bizplaceId')
25
+ .andWhere('"inv"."product_id" = :productId')
26
+ .andWhere('"inv"."status" = :status')
27
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
28
+ .setParameters({
29
+ domainId: this.domain.id,
30
+ bizplaceId: bizplace.id,
31
+ productId: product.id,
32
+ status: INVENTORY_STATUS.STORED,
33
+ locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
34
+ })
32
35
 
33
- let defaultProductDetail: ProductDetail = product.productDetails.find(productDetail => productDetail.isDefault)
34
- let inventoryTotalQty: number = 0
35
- let inventoryTotalLockedQty: number = 0
36
+ let inventories: Inventory[] = await qb.getMany()
36
37
 
37
- if (inventories?.length > 0) {
38
- const sellercraftInvs: any[] = await Promise.all(
39
- inventories.map(async (inventory: Inventory) => {
40
- const inventoryPackingType: string = inventory.packingType
38
+ let defaultProductDetail: ProductDetail = product.productDetails.find(productDetail => productDetail.isDefault)
39
+ let inventoryTotalQty: number = 0
40
+ let inventoryTotalLockedQty: number = 0
41
41
 
42
- let packingSize: number = 1
43
- if (inventoryPackingType !== defaultProductDetail.packingType) {
44
- const unmatchingProductDetail: ProductDetail = product.productDetails.find(
45
- productDetail => productDetail.packingType === inventoryPackingType
46
- )
42
+ if (inventories?.length > 0) {
43
+ const sellercraftInvs: any[] = await Promise.all(
44
+ inventories.map(async (inventory: Inventory) => {
45
+ const inventoryPackingType: string = inventory.packingType
47
46
 
48
- packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail)
49
- }
47
+ let packingSize: number = 1
48
+ if (inventoryPackingType !== defaultProductDetail.packingType) {
49
+ const unmatchingProductDetail: ProductDetail = product.productDetails.find(
50
+ productDetail => productDetail.packingType === inventoryPackingType
51
+ )
50
52
 
51
- return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize }
52
- })
53
- )
53
+ packingSize = await this.getChildPackingSize(
54
+ productDetails,
55
+ defaultProductDetail,
56
+ unmatchingProductDetail
57
+ )
58
+ }
54
59
 
55
- inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
56
- total += currentValue.totalQty
57
- return total
58
- }, 0)
60
+ return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize }
61
+ })
62
+ )
59
63
 
60
- inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
61
- total += currentValue.totalLockedQty
62
- return total
63
- }, 0)
64
- }
64
+ inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
65
+ total += currentValue.totalQty
66
+ return total
67
+ }, 0)
65
68
 
66
- const sellercraftInv: any[] = [
67
- {
68
- sku: product.sku,
69
- gtin: defaultProductDetail.gtin,
70
- stock: {
71
- quantity_total: inventoryTotalQty,
72
- quantity_reserved: inventoryTotalLockedQty,
73
- unit_of_measure: 'EA'
74
- },
75
- package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
76
- package_dimensions: {
77
- length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
78
- width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
79
- height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
80
- }
69
+ inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
70
+ total += currentValue.totalLockedQty
71
+ return total
72
+ }, 0)
81
73
  }
82
- ]
83
74
 
84
- await SellercraftAPI.updateProduct(sellercraft, {
85
- context: { state: { domain: this?.domain, user: this?.user } },
86
- accountId: sellercraft.accountId,
87
- sellercraftInv
88
- })
75
+ const sellercraftInv: any[] = [
76
+ {
77
+ sku: product.sku,
78
+ gtin: defaultProductDetail.gtin,
79
+ stock: {
80
+ quantity_total: inventoryTotalQty,
81
+ quantity_reserved: inventoryTotalLockedQty,
82
+ unit_of_measure: 'EA'
83
+ },
84
+ package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
85
+ package_dimensions: {
86
+ length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
87
+ width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
88
+ height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
89
+ }
90
+ }
91
+ ]
92
+
93
+ await SellercraftAPI.updateProduct(sellercraft, {
94
+ context: { state: { domain: this?.domain, user: this?.user } },
95
+ accountId: sellercraft.accountId,
96
+ sellercraftInv
97
+ })
98
+ }
89
99
  }
90
100
  }