@things-factory/sales-base 3.8.8 → 3.8.9

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,10 +8,12 @@ const id_rule_base_1 = require("@things-factory/id-rule-base");
8
8
  const notification_1 = require("@things-factory/notification");
9
9
  const product_base_1 = require("@things-factory/product-base");
10
10
  const setting_base_1 = require("@things-factory/setting-base");
11
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
11
12
  const constants_1 = require("../../../constants");
12
13
  const order_1 = require("../../../constants/order");
13
14
  const entities_1 = require("../../../entities");
14
15
  const errors_1 = require("../../../errors");
16
+ const utils_1 = require("../../../utils");
15
17
  const order_no_generator_1 = require("../../../utils/order-no-generator");
16
18
  const bulk_release_goods_available_items_1 = require("./bulk-release-goods-available-items");
17
19
  exports.bulkAddReleaseGoods = {
@@ -28,40 +30,99 @@ exports.bulkAddReleaseGoods = {
28
30
  }
29
31
  });
30
32
  let releaseGoods = extractRawReleaseGoods(rawReleaseGoods);
33
+ let errorsFound = [];
31
34
  for (let i = 0, l = releaseGoods.length; i < l; i++) {
32
35
  // generate release good by group to avoid duplication
33
36
  // if this function is called simultaneously by different users
34
- let availableItems = await (0, bulk_release_goods_available_items_1.bulkReleaseGoodsAvailableItemsFunction)(_, [...releaseGoods[i].orderInventories], bizplaceId, context, tx);
35
- if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty))
36
- throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
37
- // update orderInventories if availableItems are valid
38
- releaseGoods[i].orderInventories = availableItems;
39
- const createdReleaseGood = await bulkGenerateReleaseGoods(_, releaseGoods[i], bizplaceId, roNoSetting, domain, user, tx);
40
- createdReleaseGoods.push(createdReleaseGood);
37
+ try {
38
+ await (0, typeorm_1.getConnection)().transaction(async (childTx) => {
39
+ const existingReleaseGood = await childTx.getRepository(entities_1.ReleaseGood).findOne({
40
+ where: Object.assign(Object.assign({}, Object.fromEntries(Object.entries(releaseGoods[i]).filter(([_, val]) => !/^\s*$/.test(val) && _ != 'orderInventories'))), { domain })
41
+ });
42
+ if (existingReleaseGood)
43
+ throw new Error('release good order is already exist in the system');
44
+ let availableItems = await (0, bulk_release_goods_available_items_1.bulkReleaseGoodsAvailableItemsFunction)(_, [...releaseGoods[i].orderInventories], bizplaceId, context, childTx);
45
+ if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty))
46
+ throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
47
+ // update orderInventories if availableItems are valid
48
+ releaseGoods[i].orderInventories = availableItems;
49
+ const createdReleaseGood = await bulkGenerateReleaseGoods(_, releaseGoods[i], bizplaceId, roNoSetting, domain, user, childTx);
50
+ createdReleaseGoods.push(createdReleaseGood);
51
+ });
52
+ }
53
+ catch (e) {
54
+ errorsFound.push(e);
55
+ }
41
56
  }
42
- let confirmedReleaseGoods = await bulkConfirmReleaseGoods(createdReleaseGoods.map(rg => rg.name), domain, user, context, tx);
57
+ let confirmedReleaseGoods = [];
58
+ try {
59
+ confirmedReleaseGoods = await bulkConfirmReleaseGoods(createdReleaseGoods.map(rg => rg.name), domain, user, context, tx);
60
+ }
61
+ catch (e) {
62
+ errorsFound.push(e);
63
+ }
64
+ // if (errorsFound.length) { then ?? }
43
65
  return confirmedReleaseGoods;
44
66
  }
45
67
  };
46
68
  async function bulkGenerateReleaseGoods(_, releaseGood, bizplaceId, roNoSetting, domain, user, tx) {
69
+ var _a, _b;
47
70
  try {
48
71
  let warehouseDomain = domain;
49
72
  let { orderInventories } = releaseGood;
50
73
  let bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(bizplaceId);
51
74
  let newReleaseGood = Object.assign(Object.assign({}, releaseGood), { name: roNoSetting
52
75
  ? await (0, id_rule_base_1.generateId)({ domain, type: order_1.ORDER_NUMBER_RULE_TYPE.RO_NUMBER, seed: {} })
53
- : order_no_generator_1.OrderNoGenerator.releaseGood(), domain: warehouseDomain, bizplace: bizplace, deliveryAddress1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress1) || null, deliveryAddress2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress2) || null, deliveryAddress3: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress3) || null, deliveryAddress4: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress4) || null, deliveryAddress5: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress5) || null, attentionTo: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionTo) || null, attentionCompany: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionCompany) || null, city: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.city) || null, state: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.state) || null, postalCode: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.postalCode) || null, country: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) || null, phone1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone1) || null, phone2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone2) || null, email: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.email) || null, airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill, refNo: releaseGood.refNo, refNo2: releaseGood.refNo2, refNo3: releaseGood.refNo3, releaseDate: releaseGood.releaseDate, ownTransport: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.ownTransport) || false, status: constants_1.ORDER_STATUS.PENDING, creator: user, updater: user });
76
+ : order_no_generator_1.OrderNoGenerator.releaseGood(), domain: warehouseDomain, bizplace: bizplace, deliveryAddress1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress1) || null, deliveryAddress2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress2) || null, deliveryAddress3: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress3) || null, deliveryAddress4: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress4) || null, attentionTo: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionTo) || null, attentionCompany: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionCompany) || null, city: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.city) || null, state: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.state) || null, postalCode: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.postalCode) || null, country: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) || null, phone1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone1) || null, phone2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone2) || null, email: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.email) || null, airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill, refNo: releaseGood.refNo, refNo2: releaseGood.refNo2, refNo3: releaseGood.refNo3, releaseDate: releaseGood.releaseDate, ownTransport: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.ownTransport) || false, status: constants_1.ORDER_STATUS.PENDING, creator: user, updater: user });
54
77
  newReleaseGood = await tx.getRepository(entities_1.ReleaseGood).save(newReleaseGood);
78
+ let finalOrderInventories = [];
79
+ // pre assign inventory to orderInventories
55
80
  for (let oi of orderInventories) {
56
- delete oi.sku;
57
- let newOrderInv = Object.assign(new entities_1.OrderInventory(), oi);
58
- newOrderInv = Object.assign(Object.assign({}, newOrderInv), { domain: warehouseDomain, bizplace: bizplace, status: order_1.ORDER_INVENTORY_STATUS.PENDING, name: order_no_generator_1.OrderNoGenerator.orderInventory(), batchId: (oi === null || oi === void 0 ? void 0 : oi.batchId) || '', releaseGood: newReleaseGood, product: await tx.getRepository(product_base_1.Product).findOne(oi.productId), creator: user, updater: user });
59
- let newOrderProduct = Object.assign(new entities_1.OrderProduct(), newOrderInv);
60
- newOrderProduct = Object.assign(Object.assign({}, newOrderProduct), { packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, status: order_1.ORDER_PRODUCT_STATUS.PENDING_ASSIGN });
81
+ const pickingProductSetting = await tx.getRepository(setting_base_1.Setting).findOne({
82
+ where: { domain, name: 'rule-for-picking-product' }
83
+ });
84
+ let locationSortingRules = [];
85
+ if (pickingProductSetting) {
86
+ let locationSetting = JSON.parse(pickingProductSetting.value);
87
+ for (const key in locationSetting) {
88
+ locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true });
89
+ }
90
+ }
91
+ const product = await tx.getRepository(product_base_1.Product).findOne(oi.productId);
92
+ finalOrderInventories.push(...(await utils_1.InventoryUtil.autoAssignInventoryForRelease(product, oi, oi.packingType, locationSortingRules, bizplace, warehouseDomain, tx)));
93
+ }
94
+ for (let oi of finalOrderInventories) {
95
+ let generatedOI = Object.assign(new entities_1.OrderInventory(), oi);
96
+ generatedOI = Object.assign(Object.assign({}, generatedOI), { domain: warehouseDomain, bizplace, status: order_1.ORDER_INVENTORY_STATUS.PENDING, name: order_no_generator_1.OrderNoGenerator.orderInventory(), releaseGood: newReleaseGood, creator: user, updater: user });
97
+ let newOrderProduct = {
98
+ name: generatedOI.name,
99
+ product: generatedOI.product,
100
+ batchId: generatedOI.batchId,
101
+ packingType: generatedOI.packingType,
102
+ packingSize: generatedOI.packingSize,
103
+ uom: generatedOI.uom,
104
+ domain: warehouseDomain,
105
+ bizplace,
106
+ releaseQty: generatedOI.releaseQty,
107
+ releaseUomValue: generatedOI.releaseUomValue,
108
+ packQty: 0,
109
+ actualPackQty: 0,
110
+ palletQty: 0,
111
+ actualPalletQty: 0,
112
+ status: order_1.ORDER_PRODUCT_STATUS.PENDING_ASSIGN,
113
+ releaseGood: newReleaseGood,
114
+ creator: user,
115
+ updater: user
116
+ };
61
117
  newOrderProduct = await tx.getRepository(entities_1.OrderProduct).save(newOrderProduct);
62
- await tx.getRepository(entities_1.OrderInventory).save(Object.assign(Object.assign({}, newOrderInv), { orderProduct: newOrderProduct }));
118
+ await tx.getRepository(entities_1.OrderInventory).save(Object.assign(Object.assign({}, generatedOI), { orderProduct: newOrderProduct }));
119
+ // update inventory locked qty and uom value
120
+ await tx.getRepository(warehouse_base_1.Inventory).update(oi.inventory.id, {
121
+ lockedQty: (((_a = oi.inventory) === null || _a === void 0 ? void 0 : _a.lockedQty) || 0) + generatedOI.releaseQty,
122
+ lockedUomValue: (((_b = oi.inventory) === null || _b === void 0 ? void 0 : _b.lockedUomValue) || 0) + generatedOI.releaseUomValue,
123
+ updater: user
124
+ });
63
125
  }
64
- // Change the status to PENDING_RECEIVE
65
126
  return newReleaseGood;
66
127
  }
67
128
  catch (error) {
@@ -86,7 +147,7 @@ async function bulkConfirmReleaseGoods(releaseGoodsNo, domain, user, context, tx
86
147
  ]
87
148
  });
88
149
  if (!foundReleaseGoods.length)
89
- throw new Error(`Release good order doesn't exists.`);
150
+ throw new Error(`release good order doesn't exists.`);
90
151
  let customerBizplace = foundReleaseGoods[0].bizplace;
91
152
  let foundOrderInventories = foundReleaseGoods
92
153
  .map((releaseGood) => releaseGood.orderInventories)
@@ -163,6 +224,7 @@ function extractRawReleaseGoods(rawReleaseGoods) {
163
224
  });
164
225
  if (idx >= 0) {
165
226
  const duplicateSkuIdx = releaseGoods[idx].orderInventories.findIndex(oi => oi.sku === item.sku && oi.packingType === item.packingType && oi.packingSize === item.packingSize);
227
+ // if there is duplicated SKU, merge them and sum up the releaseQty
166
228
  if (duplicateSkuIdx >= 0) {
167
229
  releaseGoods[idx].orderInventories[duplicateSkuIdx].releaseQty += item.releaseQty;
168
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-add-release-goods.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/release-good/bulk-add-release-goods.ts"],"names":[],"mappings":";;;AAAA,qCAAsE;AAEtE,yDAAsD;AACtD,uDAAmD;AACnD,+DAAyD;AACzD,+DAA+D;AAC/D,+DAAsD;AACtD,+DAAsD;AAGtD,kDAAiD;AACjD,oDAKiC;AACjC,gDAA6E;AAC7E,4CAAiD;AACjD,0EAAoE;AACpE,6FAA6F;AAEhF,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAM,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,OAAY;QAC7E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAE9D,IAAI,mBAAmB,GAAkB,EAAE,CAAA;QAC3C,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;QAE7F,MAAM,WAAW,GAAY,MAAM,WAAW,CAAC,OAAO,CAAC;YACrD,KAAK,EAAE;gBACL,MAAM;gBACN,IAAI,EAAE,gCAAwB,CAAC,cAAc;aAC9C;SACF,CAAC,CAAA;QAEF,IAAI,YAAY,GAA2B,sBAAsB,CAAC,eAAe,CAAC,CAAA;QAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnD,sDAAsD;YACtD,+DAA+D;YAC/D,IAAI,cAAc,GAAU,MAAM,IAAA,2EAAsC,EACtE,CAAC,EACD,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EACrC,UAAU,EACV,OAAO,EACP,EAAE,CACH,CAAA;YAED,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrF,MAAM,IAAI,wBAAe,iCACpB,wBAAe,CAAC,WAAW,CAAC,kBAAkB,KACjD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,IAChD,CAAA;YAEJ,sDAAsD;YACtD,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,cAAc,CAAA;YAEjD,MAAM,kBAAkB,GAAgB,MAAM,wBAAwB,CACpE,CAAC,EACD,YAAY,CAAC,CAAC,CAAC,EACf,UAAU,EACV,WAAW,EACX,MAAM,EACN,IAAI,EACJ,EAAE,CACH,CAAA;YAED,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;SAC7C;QAED,IAAI,qBAAqB,GAAkB,MAAM,uBAAuB,CACtE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EACtC,MAAM,EACN,IAAI,EACJ,OAAO,EACP,EAAE,CACH,CAAA;QAED,OAAO,qBAAqB,CAAA;IAC9B,CAAC;CACF,CAAA;AAED,KAAK,UAAU,wBAAwB,CACrC,CAAM,EACN,WAAgB,EAChB,UAAkB,EAClB,WAAgB,EAChB,MAAc,EACd,IAAU,EACV,EAAkB;IAElB,IAAI;QACF,IAAI,eAAe,GAAW,MAAM,CAAA;QACpC,IAAI,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAA;QAEtC,IAAI,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE7E,IAAI,cAAc,mCACb,WAAW,KACd,IAAI,EAAE,WAAW;gBACf,CAAC,CAAC,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,8BAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBAChF,CAAC,CAAC,qCAAgB,CAAC,WAAW,EAAE,EAClC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,WAAW,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,KAAI,IAAI,EAC7C,gBAAgB,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,KAAI,IAAI,EACvD,IAAI,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,KAAI,IAAI,EAC/B,KAAK,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,KAAI,IAAI,EACjC,UAAU,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,KAAI,IAAI,EAC3C,OAAO,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,KAAI,IAAI,EACrC,MAAM,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,KAAI,IAAI,EACnC,MAAM,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,KAAI,IAAI,EACnC,KAAK,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,KAAI,IAAI,EACjC,UAAU,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,EACnC,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,YAAY,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,KAAI,KAAK,EAChD,MAAM,EAAE,wBAAY,CAAC,OAAO,EAC5B,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,GACd,CAAA;QAED,cAAc,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAEzE,KAAK,IAAI,EAAE,IAAI,gBAAgB,EAAE;YAC/B,OAAO,EAAE,CAAC,GAAG,CAAA;YAEb,IAAI,WAAW,GAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,yBAAc,EAAE,EAAE,EAAE,CAAC,CAAA;YACzE,WAAW,mCACN,WAAW,KACd,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,8BAAsB,CAAC,OAAO,EACtC,IAAI,EAAE,qCAAgB,CAAC,cAAc,EAAE,EACvC,OAAO,EAAE,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,KAAI,EAAE,EAC1B,WAAW,EAAE,cAAc,EAC3B,OAAO,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAC9D,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,GACd,CAAA;YAED,IAAI,eAAe,GAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,uBAAY,EAAE,EAAE,WAAW,CAAC,CAAA;YAClF,eAAe,mCACV,eAAe,KAClB,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,CAAC,EAChB,SAAS,EAAE,CAAC,EACZ,eAAe,EAAE,CAAC,EAClB,MAAM,EAAE,4BAAoB,CAAC,cAAc,GAC5C,CAAA;YAED,eAAe,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,uBAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAE5E,MAAM,EAAE,CAAC,aAAa,CAAC,yBAAc,CAAC,CAAC,IAAI,iCAAM,WAAW,KAAE,YAAY,EAAE,eAAe,IAAG,CAAA;SAC/F;QAED,uCAAuC;QAEvC,OAAO,cAAc,CAAA;KACtB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,KAAK,CAAA;KACZ;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,cAAwB,EACxB,MAAc,EACd,IAAU,EACV,OAAY,EACZ,EAAkB;;IAElB,IAAI,iBAAiB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAW,CAAC,CAAC,IAAI,CAAC;QAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,IAAA,YAAE,EAAC,cAAc,CAAC,EAAE,MAAM,EAAE,wBAAY,CAAC,OAAO,EAAE;QACjE,SAAS,EAAE;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,kBAAkB;YAClB,yBAAyB;YACzB,eAAe;YACf,uBAAuB;YACvB,kBAAkB;YAClB,0BAA0B;YAC1B,WAAW;SACZ;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACpF,IAAI,gBAAgB,GAAa,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE9D,IAAI,qBAAqB,GAAqB,iBAAiB;SAC5D,GAAG,CAAC,CAAC,WAAwB,EAAE,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC;SAC/D,MAAM,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE;QACpC,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;QACjC,OAAO,gBAAgB,CAAA;IACzB,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,MAAM,EAAE;SACL,aAAa,CAAC,sBAAW,CAAC;SAC1B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAY,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAElH,MAAM,EAAE;SACL,aAAa,CAAC,yBAAc,CAAC;SAC7B,MAAM,CACL,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAClD,EAAE,MAAM,EAAE,8BAAsB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAClE,CAAA;IAEH,IAAI,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,IAAI,KAAI,KAAK,EAAE;QACjC,MAAM,KAAK,GAAU,MAAM,EAAE;aAC1B,aAAa,CAAC,aAAa,CAAC;aAC5B,kBAAkB,CAAC,IAAI,CAAC;aACxB,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;aAC3B,KAAK,CAAC,EAAE,CAAC,EAAE;YACV,MAAM,QAAQ,GAAG,EAAE;iBAChB,QAAQ,EAAE;iBACV,MAAM,CAAC,SAAS,CAAC;iBACjB,IAAI,CAAC,gBAAI,EAAE,MAAM,CAAC;iBAClB,KAAK,CAAC,4BAA4B,CAAC;iBACnC,QAAQ,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBAC3D,QAAQ,EAAE,CAAA;YACb,OAAO,iBAAiB,GAAG,QAAQ,CAAA;QACrC,CAAC,CAAC;aACD,UAAU,EAAE,CAAA;QAEf,0CAA0C;QAC1C,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;YACjB,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,0BAA0B,gBAAgB,CAAC,IAAI,EAAE;gBACxD,IAAI,EAAE,4DAA4D;gBAClE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;aACtC,CAAA;YACD,MAAM,IAAA,+BAAgB,EAAC;gBACrB,SAAS;gBACT,OAAO,oBAAO,GAAG,CAAE;aACpB,CAAC,CAAA;SACH;KACF;IAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,WAAwB,EAAE,EAAE;QACxD,uCACK,WAAW,KACd,MAAM,EAAE,wBAAY,CAAC,eAAe,EACpC,OAAO,EAAE,IAAI,IACd;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,eAAe;IAC7C,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;QACnD,MAAM,GAAG,GAAW,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YAC9C,wDAAwD;YACxD,MAAM,UAAU,GAAG;gBACjB,QAAQ;gBACR,QAAQ;gBACR,aAAa;gBACb,QAAQ;gBACR,kBAAkB;gBAClB,kBAAkB;gBAClB,kBAAkB;gBAClB,kBAAkB;gBAClB,YAAY;aACb,CAAA;YAED,IAAI,CAAC,GAAQ,EAAE,EACb,CAAC,GAAQ,EAAE,CAAA;YAEb,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE;oBACZ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;oBAChB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;iBACf;YACH,CAAC,CAAC,CAAA;YAEF,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAChE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAEhE,OAAO,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;QAEF,IAAI,GAAG,IAAI,CAAC,EAAE;YACZ,MAAM,eAAe,GAAW,YAAY,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAC1E,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CACxG,CAAA;YAED,IAAI,eAAe,IAAI,CAAC,EAAE;gBACxB,YAAY,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAA;aAClF;iBAAM;gBACL,YAAY,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACtC,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;iBACtC,CAAC,CAAA;aACH;SACF;aAAM;YACL,YAAY,CAAC,IAAI,CAAC;gBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE;oBAChB;wBACE,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;qBACtC;iBACF;aACF,CAAC,CAAA;SACH;QAED,OAAO,YAAY,CAAA;IACrB,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"bulk-add-release-goods.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/release-good/bulk-add-release-goods.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bulkReleaseGoodsAvailableItemsFunction = exports.bulkReleaseGoodsAvailableItems = void 0;
4
4
  const biz_base_1 = require("@things-factory/biz-base");
5
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
5
6
  exports.bulkReleaseGoodsAvailableItems = {
6
7
  async bulkReleaseGoodsAvailableItems(_, { rawReleaseGoods, bizplaceId }, context) {
7
8
  const { tx } = context.state;
@@ -27,6 +28,7 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
27
28
  CREATE TEMP TABLE temp_order_products(
28
29
  product_id VARCHAR(50),
29
30
  sku VARCHAR(150),
31
+ product_info VARCHAR(250),
30
32
  packing_type VARCHAR(50),
31
33
  packing_size INT,
32
34
  uom VARCHAR(10),
@@ -36,6 +38,8 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
36
38
  await tx.query(`
37
39
  INSERT INTO temp_order_products
38
40
  SELECT p.id AS product_id, js.sku,
41
+ CASE WHEN p.description NOT IN (NULL, '', '-') THEN CONCAT(p.name, '(', p.description, ')')
42
+ ELSE p.name END AS product_info,
39
43
  CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_type ELSE pd.packing_type END,
40
44
  CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_size ELSE pd.packing_size END,
41
45
  CASE WHEN js.uom NOTNULL THEN js.uom ELSE pd.uom END,
@@ -45,16 +49,12 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
45
49
  LEFT JOIN product_details pd ON p.id = pd.product_id AND pd.is_default = TRUE;
46
50
  `, [companyBizplaceId.id]);
47
51
  let availableItems = await tx.query(`
48
- SELECT i.product_id, foo.sku, i.batch_id, i.packing_type, i.packing_size, i.uom,
52
+ WITH inv AS (
53
+ SELECT i.product_id, foo.sku, foo.product_info, i.batch_id, i.packing_type, i.packing_size, i.uom,
49
54
  SUM(i.qty - COALESCE(i.locked_qty, 0)) - COALESCE(
50
55
  (
51
56
  SELECT SUM(oi.release_qty) FROM order_inventories oi
52
- WHERE (
53
- oi.status = 'PENDING'
54
- OR oi.status = 'PENDING_RECEIVE'
55
- OR oi.status = 'PENDING_WORKSHEET'
56
- OR oi.status = 'PENDING_SPLIT'
57
- )
57
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
58
58
  AND oi.inventory_id IS null
59
59
  AND oi.product_id = i.product_id::uuid
60
60
  AND oi.packing_type = i.packing_type
@@ -65,12 +65,7 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
65
65
  SUM(i.uom_value - COALESCE(i.locked_uom_value, 0)) - COALESCE(
66
66
  (
67
67
  SELECT SUM(oi.release_uom_value) FROM order_inventories oi
68
- WHERE (
69
- oi.status = 'PENDING'
70
- OR oi.status = 'PENDING_RECEIVE'
71
- OR oi.status = 'PENDING_WORKSHEET'
72
- OR oi.status = 'PENDING_SPLIT'
73
- )
68
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
74
69
  AND oi.inventory_id IS null
75
70
  AND oi.product_id = i.product_id::uuid
76
71
  AND oi.packing_type = i.packing_type
@@ -79,10 +74,12 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
79
74
  AND oi.bizplace_id = $2
80
75
  ), 0) as "remain_uom_value"
81
76
  FROM inventories i
77
+ LEFT JOIN locations l
78
+ ON i.location_id = l.id
82
79
  INNER JOIN (
83
- SELECT top.product_id, top.sku, top.packing_type, top.packing_size, top.uom
80
+ SELECT top.product_id, top.sku, top.product_info, top.packing_type, top.packing_size, top.uom
84
81
  FROM temp_order_products top
85
- GROUP BY top.product_id, top.sku, top.packing_type, top.packing_size, top.uom
82
+ GROUP BY top.product_id, top.sku, top.product_info, top.packing_type, top.packing_size, top.uom
86
83
  ) AS foo
87
84
  ON i.product_id = foo.product_id::uuid
88
85
  AND i.packing_type = foo.packing_type
@@ -90,13 +87,16 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
90
87
  AND i.uom = foo.uom
91
88
  AND i.domain_id = $1
92
89
  AND i.bizplace_id = $2
93
- GROUP BY i.product_id, foo.sku, i.batch_id, i.packing_type, i.packing_size, i.uom
90
+ WHERE l.type NOT IN ($3, $4)
91
+ GROUP BY i.product_id, foo.sku,foo.product_info, i.batch_id, i.packing_type, i.packing_size, i.uom
94
92
  ORDER BY foo.sku, remain_qty
95
- `, [domain.id, bizplaceId]);
93
+ ) SELECT * FROM inv WHERE remain_qty > 0
94
+ `, [domain.id, bizplaceId, warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]);
96
95
  await tx.query('DROP TABLE temp_order_products');
97
96
  availableItems = availableItems.map(item => {
98
97
  return {
99
98
  productId: item.product_id,
99
+ productInfo: item.product_info,
100
100
  sku: item.sku,
101
101
  batchId: item.batch_id,
102
102
  packingType: item.packing_type,
@@ -111,7 +111,6 @@ async function bulkReleaseGoodsAvailableItemsFunction(_, rawReleaseGoods, bizpla
111
111
  exports.bulkReleaseGoodsAvailableItemsFunction = bulkReleaseGoodsAvailableItemsFunction;
112
112
  function _extractData(rawData, validatedData) {
113
113
  return rawData.map(raw => {
114
- var _a, _b;
115
114
  const idx = validatedData.findIndex(val => {
116
115
  const comparison = ['packingType', 'packingSize', 'uom'];
117
116
  let a = {}, b = {};
@@ -128,25 +127,31 @@ function _extractData(rawData, validatedData) {
128
127
  let releaseUomValue = 0;
129
128
  // if sku is matched, assign qty and product id
130
129
  if (idx >= 0) {
130
+ const uomValuePerQty = Math.round((validatedData[idx].remainUomValue / validatedData[idx].remainQty) * 100) / 100;
131
+ // use Math.round again because 4.2 * 6 = 25.200000000000003
132
+ releaseUomValue = Math.round(uomValuePerQty * raw.releaseQty * 100) / 100;
131
133
  // assign qty to rawData as much as possible
132
- releaseUomValue =
133
- (Math.round((((_a = validatedData[idx]) === null || _a === void 0 ? void 0 : _a.remainUomValue) / ((_b = validatedData[idx]) === null || _b === void 0 ? void 0 : _b.remainQty)) * 100) / 100) * raw.releaseQty;
134
134
  raw.assignedQty =
135
135
  validatedData[idx].remainQty >= raw.releaseQty
136
136
  ? raw.releaseQty > 0
137
137
  ? raw.releaseQty
138
138
  : 0
139
- : validatedData[idx].remainQty;
139
+ : validatedData[idx].remainQty > 0
140
+ ? validatedData[idx].remainQty
141
+ : 0;
140
142
  raw.assignedUomValue =
141
143
  validatedData[idx].remainUomValue >= releaseUomValue
142
144
  ? releaseUomValue > 0
143
145
  ? releaseUomValue
144
146
  : 0
145
- : validatedData[idx].remainUomValue;
147
+ : validatedData[idx].remainUomValue > 0
148
+ ? validatedData[idx].remainUomValue
149
+ : 0;
146
150
  // deduct qty & uomValue from validateData
147
151
  validatedData[idx].remainQty -= raw.assignedQty;
148
152
  validatedData[idx].remainUomValue -= raw.assignedUomValue;
149
153
  raw.productId = validatedData[idx].productId;
154
+ raw.productInfo = validatedData[idx].productInfo;
150
155
  raw.packingType = validatedData[idx].packingType;
151
156
  raw.packingSize = validatedData[idx].packingSize;
152
157
  raw.uom = validatedData[idx].uom;
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-release-goods-available-items.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/release-good/bulk-release-goods-available-items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bulk-release-goods-available-items.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/release-good/bulk-release-goods-available-items.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,7 @@ exports.RawReleaseGood = (0, graphql_tag_1.default) `
55
55
  packingSize: Int
56
56
  uom: String
57
57
  productId: String
58
+ productInfo: String
58
59
  sku: String
59
60
  releaseQty: Int
60
61
  releaseUomValue: Float
@@ -1 +1 @@
1
- {"version":3,"file":"raw-release-good.js","sourceRoot":"","sources":["../../../../server/graphql/types/release-good/raw-release-good.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,cAAc,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDhC,CAAA"}
1
+ {"version":3,"file":"raw-release-good.js","sourceRoot":"","sources":["../../../../server/graphql/types/release-good/raw-release-good.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,cAAc,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDhC,CAAA"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.switchLocationStatus = exports.InventoryUtil = void 0;
3
+ exports._composeTargetInventories = exports.switchLocationStatus = exports.InventoryUtil = void 0;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const product_base_1 = require("@things-factory/product-base");
6
6
  const warehouse_base_1 = require("@things-factory/warehouse-base");
7
+ const constants_1 = require("../constants");
8
+ const entities_1 = require("../entities");
7
9
  const errors_1 = require("../errors");
8
10
  exports.InventoryUtil = {
9
11
  /**
@@ -210,6 +212,53 @@ exports.InventoryUtil = {
210
212
  if (duplicatedReusablePalletCnt)
211
213
  throw new Error(palletId + ` exists`);
212
214
  },
215
+ /**
216
+ * To pre-assign inventories automatically for orderInventories in Release Goods
217
+ * @param product
218
+ * @param orderInventory
219
+ * @param packingType
220
+ * @param locationSortingRules
221
+ * @param customerBizplace
222
+ * @param domain
223
+ * @param trxMgr
224
+ * @returns orderInventories
225
+ */
226
+ async autoAssignInventoryForRelease(product, orderInventory, packingType, locationSortingRules = [], customerBizplace, domain, trxMgr) {
227
+ let qb = trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('iv');
228
+ qb.leftJoinAndSelect('iv.location', 'loc')
229
+ .andWhere('"iv"."domain_id" = :domainId')
230
+ .andWhere('"iv"."bizplace_id" = :bizplaceId')
231
+ .andWhere('"iv"."packing_type" = :packingType')
232
+ .andWhere('"iv"."product_id" = :productId')
233
+ .andWhere('"iv"."status" = :status')
234
+ .andWhere('"iv"."qty" - COALESCE("iv"."locked_qty", 0) > 0')
235
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
236
+ .setParameters({
237
+ domainId: domain.id,
238
+ bizplaceId: customerBizplace.id,
239
+ packingType: packingType,
240
+ productId: product.id,
241
+ status: warehouse_base_1.INVENTORY_STATUS.STORED,
242
+ locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]
243
+ });
244
+ if (locationSortingRules === null || locationSortingRules === void 0 ? void 0 : locationSortingRules.length) {
245
+ locationSortingRules.forEach((rule, idx) => {
246
+ idx === 0
247
+ ? qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
248
+ : qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC');
249
+ });
250
+ }
251
+ else {
252
+ qb.addOrderBy('"iv"."created_at"', 'ASC');
253
+ }
254
+ let inventories = await qb.getMany();
255
+ if (!(inventories === null || inventories === void 0 ? void 0 : inventories.length))
256
+ throw new Error(`no inventories found for ${product.sku}`);
257
+ inventories = inventories.map(inventory => {
258
+ return Object.assign(Object.assign({}, inventory), { remainQty: inventory.qty - ((inventory === null || inventory === void 0 ? void 0 : inventory.lockedQty) || 0), remainUomValue: inventory.uomValue - ((inventory === null || inventory === void 0 ? void 0 : inventory.lockedUomValue) || 0) });
259
+ });
260
+ return _composeTargetInventories(product, orderInventory, inventories);
261
+ },
213
262
  /**
214
263
  * @summary Do transaction on inventory record
215
264
  * @description It will update inventory after set a temp (domain, updater)
@@ -457,4 +506,43 @@ async function switchLocationStatus(domain, location, updater, trxMgr) {
457
506
  return location;
458
507
  }
459
508
  exports.switchLocationStatus = switchLocationStatus;
509
+ function _composeTargetInventories(product, record, inventories) {
510
+ let leftReleaseQty = record.releaseQty;
511
+ let leftReleaseUomValue = record.releaseUomValue;
512
+ let compReleaseQty = 0;
513
+ let compReleaseUomValue = 0;
514
+ let totalInventoryQty = inventories.reduce((total, inventory) => total + inventory.remainQty, 0);
515
+ if (totalInventoryQty < record.releaseQty) {
516
+ throw new Error(`invalid release qty for ${product === null || product === void 0 ? void 0 : product.sku}`);
517
+ }
518
+ let orderInventories = [];
519
+ let idx = 0;
520
+ while (compReleaseQty < record.releaseQty) {
521
+ const inventory = inventories[idx];
522
+ const { packingType, packingSize, batchId, uom } = inventory;
523
+ let orderInventory = new entities_1.OrderInventory();
524
+ if (inventory.remainQty > leftReleaseQty) {
525
+ const uomValuePerQty = Math.round((inventory.remainUomValue / inventory.remainQty) * 100) / 100;
526
+ compReleaseQty += leftReleaseQty;
527
+ compReleaseUomValue += leftReleaseUomValue;
528
+ orderInventory = Object.assign(Object.assign({}, orderInventory), { releaseQty: leftReleaseQty, releaseUomValue: Math.round(leftReleaseQty * uomValuePerQty * 100) / 100 });
529
+ }
530
+ else {
531
+ compReleaseQty += inventory.remainQty;
532
+ compReleaseUomValue += inventory.remainUomValue;
533
+ leftReleaseQty -= inventory.remainQty;
534
+ leftReleaseUomValue -= inventory.remainUomValue;
535
+ orderInventory = Object.assign(Object.assign({}, orderInventory), { releaseQty: inventory.remainQty, releaseUomValue: inventory.remainUomValue });
536
+ }
537
+ orderInventories.push(Object.assign(Object.assign({}, orderInventory), { inventory,
538
+ packingType,
539
+ packingSize,
540
+ batchId,
541
+ uom,
542
+ product, type: constants_1.ORDER_TYPES.RELEASE_OF_GOODS }));
543
+ idx++;
544
+ }
545
+ return orderInventories;
546
+ }
547
+ exports._composeTargetInventories = _composeTargetInventories;
460
548
  //# sourceMappingURL=inventory-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-util.ts"],"names":[],"mappings":";;;AAAA,qCAAuF;AAIvF,+DAAqE;AAErE,mEASuC;AAYvC,sCAA2C;AAW9B,QAAA,aAAa,GAAG;IAC3B;;;;;;;OAOG;IACH,KAAK,CAAC,6BAA6B,CAAC,SAAqB,EAAE,MAAiB,EAAE,OAAY,EAAE,MAAqB;QAC/G,IAAI;YACF,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC5B,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;YAEpD,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAC1G,SAAS,EACT,OAAO,EACP,MAAM,CACP,CAAA;YAED,IAAI,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA0DmD,WAAW;;;;iCAItD,8BAAa,CAAC,UAAU,OAAO,8BAAa,CAAC,OAAO;YACzE,kBAAkB;;;;;;;;;;;;;;;;;;;;;qCAqBO,WAAW;;;;;YAKpC,iBAAiB;;;;UAInB,WAAW;;KAEhB,CAAA;YAEC,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YAE7C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,GAAQ,MAAM,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;YACzG,IAAI,KAAK,GAAU,EAAE,CAAA;YAErB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE;gBACtB,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,+DAA+D,EAAE;oBAC1F,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK;oBACtD,MAAM,CAAC,UAAU,CAAC,KAAK;iBACxB,CAAC,CAAA;aACH;iBAAM;gBACL,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;aACzE;YAED,MAAM,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAE7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,yCAAyC,CAC7C,eAAuB,EACvB,eAAyB,EACzB,gBAAkC,EAClC,OAAY,EACZ,MAAsB;QAEtB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAC1B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;gBACxB,QAAQ,EAAE,CAAC,CAAC,OAAO;gBACnB,YAAY,EAAE,CAAC,CAAC,WAAW;gBAC3B,WAAW,EAAE,CAAC,CAAC,UAAU;gBACzB,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAA;QACH,CAAC,CAAC,CACH,CAAA;QAED,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;8DA0BwD,OAAO;;;;;;;;KAQhE,EACC,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CACzC,CAAA;QAED,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,YAAY,EAAE;gBACrC,MAAM,IAAI,wBAAe,iCACpB,wBAAe,CAAC,WAAW,CAAC,sBAAsB,KACrD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAC1C,CAAA;aACH;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,eAAuB,EAAE,MAAqB;QAC3F,MAAM,mBAAmB,GAAW,MAAM,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;YAC9E,MAAM,EAAE,eAAe;YACvB,QAAQ;YACR,MAAM,EAAE,IAAA,aAAG,EAAC,IAAA,eAAK,EAAC,iCAAgB,CAAC,UAAU,CAAC,CAAC;SAChD,CAAC,CAAA;QAEF,IAAI,mBAAmB;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;QAE9D,MAAM,2BAA2B,GAAW,MAAM,MAAM,CAAC,aAAa,CAAC,uBAAM,CAAC,CAAC,KAAK,CAAC;YACnF,KAAK,EAAE;gBACL,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,QAAQ;aACf;SACF,CAAC,CAAA;QAEF,IAAI,2BAA2B;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAA6B,EAC7B,cAAkC,EAClC,UAAkB,EAClB,aAAqB,EACrB,eAAuB,EACvB,IAAU,EACV,MAAqB;QAErB,IAAI,SAAS,CAAC,EAAE,EAAE;YAChB,SAAS,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;SACrD;aAAM;YACL,SAAS,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;SACrD;QAED,MAAM,wBAAwB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAEnH,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CAAA;AAUD,KAAK,UAAU,aAAa,CAC1B,SAAqB,EACrB,OAAyD,EACzD,MAAqB;;IAErB,IAAI,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAElF,IAAI,kBAAkB,GAAG;;4BAEC,WAAW;GACpC,CAAA;IACD,IAAI,iBAAiB,GAAG;;GAEvB,CAAA;IAED,IAAI,WAAW,GAAG;;GAEjB,CAAA;IAED,IAAI,WAAmB,CAAA;IACvB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;QACnB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAsD,EAAE,EAAE;YAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;YAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;YAExB,QAAQ,IAAI,EAAE;gBACZ,KAAK,SAAS;oBACZ,WAAW,IAAI,8BAA8B,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;oBACnE,MAAK;gBAEP,KAAK,YAAY;oBACf,WAAW,IAAI,iCAAiC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;oBACtE,MAAK;gBAEP,KAAK,cAAc;oBACjB,WAAW,IAAI,mCAAmC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;oBACxE,MAAK;gBAEP,KAAK,aAAa;oBAChB,MAAM,QAAQ,GAAc,MAAM,MAAM,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,IAAI,CAAC;wBACnE,MAAM,EAAE,CAAC,IAAI,CAAC;wBACd,KAAK,EAAE;4BACL;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,IAAI,EAAE,IAAA,aAAG,EACP,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;4BACD;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,GAAG,EAAE,IAAA,aAAG,EACN,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;4BACD;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,WAAW,EAAE,IAAA,aAAG,EACd,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;yBACF;qBACF,CAAC,CAAA;oBAEF,MAAM,UAAU,GAAW,QAAQ;yBAChC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;yBACrC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;yBAC9B,IAAI,EAAE,CAAA;oBAET,IAAI,UAAU,CAAC,MAAM,EAAE;wBACrB,kBAAkB,IAAI,wBAAwB,UAAU,GAAG,CAAA;qBAC5D;yBAAM;wBACL,kBAAkB,IAAI,yBAAyB,CAAA;qBAChD;oBAED,wCAAwC;oBACxC,MAAM,cAAc,GAAoB,MAAM,MAAM,CAAC,aAAa,CAAC,4BAAa,CAAC,CAAC,IAAI,CAAC;wBACrF,MAAM,EAAE,CAAC,IAAI,CAAC;wBACd,KAAK,EAAE;4BACL;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,IAAI,EAAE,IAAA,aAAG,EACP,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;4BACD;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,GAAG,EAAE,IAAA,aAAG,EACN,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;4BACD;gCACE,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gCAChE,WAAW,EAAE,IAAA,aAAG,EACd,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAC9F;6BACF;yBACF;qBACF,CAAC,CAAA;oBAEF,MAAM,gBAAgB,GAAW,cAAc;yBAC5C,GAAG,CAAC,CAAC,MAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;yBACzC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;yBAC9B,IAAI,EAAE,CAAA;oBAET,IAAI,gBAAgB,CAAC,MAAM,EAAE;wBAC3B,iBAAiB,IAAI,iBAAiB,gBAAgB,GAAG,CAAA;qBAC1D;yBAAM;wBACL,iBAAiB,IAAI,kBAAkB,CAAA;qBACxC;oBACD,MAAK;gBAEP,KAAK,aAAa;oBAChB,WAAW,IAAI,kCAAkC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;oBACvE,MAAK;gBAEP,KAAK,YAAY;oBACf,WAAW,IAAI,sCAAsC,CAAA;oBACrD,MAAK;gBAEP,KAAK,YAAY;oBACf,WAAW,IAAI,sCAAsC,CAAA;oBACrD,MAAK;gBAEP,KAAK,eAAe;oBAClB,kBAAkB,IAAI;uDACqB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK;yBACrF,GAAG,CACF,CAAC,CAA8D,EAAE,EAAE,CACjE,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,WAAW,IAAI,CAC3D;yBACA,IAAI,EAAE;aACR,CAAA;oBACD,MAAK;gBAEP,KAAK,cAAc;oBACjB,iBAAiB,IAAI;gBACjB,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK;yBACjG,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC;yBACvD,IAAI,EAAE;aACR,CAAA;oBACD,MAAK;aACR;QACH,CAAC,CAAC,CACH,CAAA;QAED,WAAW,GAAG,IAAI,CAAC,SAAS,CAC1B,CAAA,MAAA,OAAO;aACJ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,0CAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,OAAO;gBACL,UAAU,EAAE,GAAG,CAAC,SAAS;gBACzB,WAAW,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,KAAI,CAAC;gBACjC,iBAAiB,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,eAAe,KAAI,CAAC;aAC7C,CAAA;QACH,CAAC,CAAC,KAAI,EAAE,CACX,CAAA;KACF;IAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;AACzF,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAAoD,EACpD,MAAqB;IAErB,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,SAAoD,EACpD,MAAqB;IAErB,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC5D,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC9D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,SAAoB,EACpB,QAAa,EACb,eAAuB,EACvB,GAAW,EACX,QAAgB,EAChB,IAAU,EACV,MAAsB;;IAEtB,MAAM,cAAc,GAClB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,iCAAgB,CAAC,KAAI,IAAA,uBAAa,EAAC,iCAAgB,CAAC,CAAA;IAC5E,MAAM,OAAO,GAA0B,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,0BAAS,CAAC,KAAI,IAAA,uBAAa,EAAC,0BAAS,CAAC,CAAA;IAEnG,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,EAAE,CAAA;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACtE,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAA,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACpG,IACE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA;QAClB,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAA;QACpB,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,EAAE,CAAA;QACvB,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,0CAAE,EAAE,CAAA;QACzB,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,0CAAE,EAAE,CAAA,EACxB;QACA,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YAChC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE;YAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;SACtE,CAAC,CAAA;KACH;IAED,MAAM,MAAM,GAAW,SAAS,CAAC,MAAM,CAAA;IACvC,MAAM,QAAQ,GAAa,SAAS,CAAC,QAAQ,CAAA;IAE7C,MAAM,GAAG,GAAW,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1G,IAAI,UAAU,GAAW,CAAC,CAAA;IAC1B,IAAI,eAAe,GAAW,CAAC,CAAA;IAE/B,IAAI,GAAG,EAAE;QACP,MAAM,cAAc,GAAqB,MAAM,cAAc,CAAC,OAAO,CAAC;YACpE,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,GAAG,EAAE,GAAG,GAAG,CAAC;SACb,CAAC,CAAA;QACF,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,CAAA;QAC3D,eAAe,GAAG,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAA;KAC3E;IAED,IAAI,gBAAgB,GAAqB,IAAI,iCAAgB,EAAE,CAAA;IAC/D,gBAAgB,CAAC,IAAI,GAAG,qCAAoB,CAAC,oBAAoB,EAAE,CAAA;IACnE,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;IACpD,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAA;IAC1B,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IAC5C,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAA;IAClD,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAC1C,gBAAgB,CAAC,eAAe,GAAG,eAAe,CAAA;IAClD,gBAAgB,CAAC,UAAU,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,KAAI,IAAI,CAAA;IAClD,gBAAgB,CAAC,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,IAAI,CAAA;IACjD,gBAAgB,CAAC,UAAU,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,KAAI,IAAI,CAAA;IACrD,gBAAgB,CAAC,SAAS,GAAG,SAAS,CAAA;IACtC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IAC5C,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAA;IAC1D,gBAAgB,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;IACtC,gBAAgB,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IAChD,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAA;IAC1D,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;IACpD,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;IACpD,gBAAgB,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAA;IACpC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAA;IAC1B,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAA;IACxC,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACpC,gBAAgB,CAAC,eAAe,GAAG,eAAe,CAAA;IAClD,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAC1C,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAA;IAE/B,gBAAgB,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAE9D,IAAI,SAAS,CAAC,OAAO,KAAK,GAAG,EAAE;QAC7B,MAAM,OAAO,CAAC,IAAI,iCACb,SAAS,KACZ,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAC7B,OAAO,EAAE,IAAI,IACb,CAAA;KACH;IAED,MAAM,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1D,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,QAAkB,EAClB,OAAa,EACb,MAAsB;IAEtB,MAAM,OAAO,GAA0B,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,0BAAS,CAAC,KAAI,IAAA,uBAAa,EAAC,0BAAS,CAAC,CAAA;IACnG,MAAM,YAAY,GAAyB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,yBAAQ,CAAC,KAAI,IAAA,uBAAa,EAAC,yBAAQ,CAAC,CAAA;IACrG,MAAM,iBAAiB,GAAW,MAAM,OAAO,CAAC,KAAK,CAAC;QACpD,MAAM;QACN,MAAM,EAAE,iCAAgB,CAAC,MAAM;QAC/B,QAAQ;KACT,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,gCAAe,CAAC,KAAK,EAAE;QACnE,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,iCAC7B,QAAQ,KACX,MAAM,EAAE,gCAAe,CAAC,KAAK,EAC7B,OAAO,IACP,CAAA;KACH;SAAM,IAAI,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,gCAAe,CAAC,KAAK,EAAE;QACzE,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,iCAC7B,QAAQ,KACX,MAAM,EAAE,gCAAe,CAAC,QAAQ,EAChC,OAAO,IACP,CAAA;KACH;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AA7BD,oDA6BC"}
1
+ {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/sales-base",
3
- "version": "3.8.8",
3
+ "version": "3.8.9",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -29,11 +29,11 @@
29
29
  "@things-factory/biz-base": "^3.8.0",
30
30
  "@things-factory/code-base": "^3.8.0",
31
31
  "@things-factory/notification": "^3.8.0",
32
- "@things-factory/product-base": "^3.8.3",
32
+ "@things-factory/product-base": "^3.8.9",
33
33
  "@things-factory/setting-base": "^3.8.0",
34
34
  "@things-factory/shell": "^3.8.0",
35
35
  "@things-factory/transport-base": "^3.8.0",
36
- "@things-factory/warehouse-base": "^3.8.8"
36
+ "@things-factory/warehouse-base": "^3.8.9"
37
37
  },
38
- "gitHead": "3f0cf4cd9eba27f4b4a7688c462cc3183dd9df00"
38
+ "gitHead": "7a9270f0a733762814364529eb6c54f258a7417f"
39
39
  }
@@ -1,4 +1,4 @@
1
- import { EntityManager, getRepository, In, Repository } from 'typeorm'
1
+ import { EntityManager, getConnection, getRepository, In, Repository } from 'typeorm'
2
2
 
3
3
  import { Role, User } from '@things-factory/auth-base'
4
4
  import { Bizplace } from '@things-factory/biz-base'
@@ -7,6 +7,7 @@ import { sendNotification } from '@things-factory/notification'
7
7
  import { Product } from '@things-factory/product-base'
8
8
  import { Setting } from '@things-factory/setting-base'
9
9
  import { Domain } from '@things-factory/shell'
10
+ import { Inventory } from '@things-factory/warehouse-base'
10
11
 
11
12
  import { ORDER_STATUS } from '../../../constants'
12
13
  import {
@@ -17,6 +18,7 @@ import {
17
18
  } from '../../../constants/order'
18
19
  import { OrderInventory, OrderProduct, ReleaseGood } from '../../../entities'
19
20
  import { ValidationError } from '../../../errors'
21
+ import { InventoryUtil } from '../../../utils'
20
22
  import { OrderNoGenerator } from '../../../utils/order-no-generator'
21
23
  import { bulkReleaseGoodsAvailableItemsFunction } from './bulk-release-goods-available-items'
22
24
 
@@ -38,46 +40,70 @@ export const bulkAddReleaseGoods = {
38
40
 
39
41
  let releaseGoods: Partial<ReleaseGood[]> = extractRawReleaseGoods(rawReleaseGoods)
40
42
 
43
+ let errorsFound: any[] = []
41
44
  for (let i = 0, l = releaseGoods.length; i < l; i++) {
42
45
  // generate release good by group to avoid duplication
43
46
  // if this function is called simultaneously by different users
44
- let availableItems: any[] = await bulkReleaseGoodsAvailableItemsFunction(
45
- _,
46
- [...releaseGoods[i].orderInventories],
47
- bizplaceId,
48
- context,
49
- tx
50
- )
51
-
52
- if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty))
53
- throw new ValidationError({
54
- ...ValidationError.ERROR_CODES.INSUFFICIENT_STOCK,
55
- detail: { data: JSON.stringify(availableItems) }
47
+ try {
48
+ await getConnection().transaction(async (childTx: EntityManager) => {
49
+ const existingReleaseGood: ReleaseGood = await childTx.getRepository(ReleaseGood).findOne({
50
+ where: {
51
+ ...Object.fromEntries(
52
+ Object.entries(releaseGoods[i]).filter(([_, val]) => !/^\s*$/.test(val) && _ != 'orderInventories')
53
+ ),
54
+ domain
55
+ }
56
+ })
57
+ if (existingReleaseGood) throw new Error('release good order is already exist in the system')
58
+
59
+ let availableItems: any[] = await bulkReleaseGoodsAvailableItemsFunction(
60
+ _,
61
+ [...releaseGoods[i].orderInventories],
62
+ bizplaceId,
63
+ context,
64
+ childTx
65
+ )
66
+
67
+ if (availableItems.some(item => !item.releaseQty || item.releaseQty > item.assignedQty))
68
+ throw new ValidationError({
69
+ ...ValidationError.ERROR_CODES.INSUFFICIENT_STOCK,
70
+ detail: { data: JSON.stringify(availableItems) }
71
+ })
72
+
73
+ // update orderInventories if availableItems are valid
74
+ releaseGoods[i].orderInventories = availableItems
75
+
76
+ const createdReleaseGood: ReleaseGood = await bulkGenerateReleaseGoods(
77
+ _,
78
+ releaseGoods[i],
79
+ bizplaceId,
80
+ roNoSetting,
81
+ domain,
82
+ user,
83
+ childTx
84
+ )
85
+
86
+ createdReleaseGoods.push(createdReleaseGood)
56
87
  })
88
+ } catch (e) {
89
+ errorsFound.push(e)
90
+ }
91
+ }
57
92
 
58
- // update orderInventories if availableItems are valid
59
- releaseGoods[i].orderInventories = availableItems
60
-
61
- const createdReleaseGood: ReleaseGood = await bulkGenerateReleaseGoods(
62
- _,
63
- releaseGoods[i],
64
- bizplaceId,
65
- roNoSetting,
93
+ let confirmedReleaseGoods: ReleaseGood[] = []
94
+ try {
95
+ confirmedReleaseGoods = await bulkConfirmReleaseGoods(
96
+ createdReleaseGoods.map(rg => rg.name),
66
97
  domain,
67
98
  user,
99
+ context,
68
100
  tx
69
101
  )
70
-
71
- createdReleaseGoods.push(createdReleaseGood)
102
+ } catch (e) {
103
+ errorsFound.push(e)
72
104
  }
73
105
 
74
- let confirmedReleaseGoods: ReleaseGood[] = await bulkConfirmReleaseGoods(
75
- createdReleaseGoods.map(rg => rg.name),
76
- domain,
77
- user,
78
- context,
79
- tx
80
- )
106
+ // if (errorsFound.length) { then ?? }
81
107
 
82
108
  return confirmedReleaseGoods
83
109
  }
@@ -109,7 +135,6 @@ async function bulkGenerateReleaseGoods(
109
135
  deliveryAddress2: releaseGood?.deliveryAddress2 || null,
110
136
  deliveryAddress3: releaseGood?.deliveryAddress3 || null,
111
137
  deliveryAddress4: releaseGood?.deliveryAddress4 || null,
112
- deliveryAddress5: releaseGood?.deliveryAddress5 || null,
113
138
  attentionTo: releaseGood?.attentionTo || null,
114
139
  attentionCompany: releaseGood?.attentionCompany || null,
115
140
  city: releaseGood?.city || null,
@@ -131,40 +156,82 @@ async function bulkGenerateReleaseGoods(
131
156
  }
132
157
 
133
158
  newReleaseGood = await tx.getRepository(ReleaseGood).save(newReleaseGood)
159
+ let finalOrderInventories: OrderInventory[] = []
134
160
 
161
+ // pre assign inventory to orderInventories
135
162
  for (let oi of orderInventories) {
136
- delete oi.sku
163
+ const pickingProductSetting: Setting = await tx.getRepository(Setting).findOne({
164
+ where: { domain, name: 'rule-for-picking-product' }
165
+ })
137
166
 
138
- let newOrderInv: OrderInventory = Object.assign(new OrderInventory(), oi)
139
- newOrderInv = {
140
- ...newOrderInv,
167
+ let locationSortingRules = []
168
+ if (pickingProductSetting) {
169
+ let locationSetting = JSON.parse(pickingProductSetting.value)
170
+ for (const key in locationSetting) {
171
+ locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })
172
+ }
173
+ }
174
+
175
+ const product: Product = await tx.getRepository(Product).findOne(oi.productId)
176
+
177
+ finalOrderInventories.push(
178
+ ...(await InventoryUtil.autoAssignInventoryForRelease(
179
+ product,
180
+ oi,
181
+ oi.packingType,
182
+ locationSortingRules,
183
+ bizplace,
184
+ warehouseDomain,
185
+ tx
186
+ ))
187
+ )
188
+ }
189
+
190
+ for (let oi of finalOrderInventories) {
191
+ let generatedOI: OrderInventory = Object.assign(new OrderInventory(), oi)
192
+ generatedOI = {
193
+ ...generatedOI,
141
194
  domain: warehouseDomain,
142
- bizplace: bizplace,
195
+ bizplace,
143
196
  status: ORDER_INVENTORY_STATUS.PENDING,
144
197
  name: OrderNoGenerator.orderInventory(),
145
- batchId: oi?.batchId || '',
146
198
  releaseGood: newReleaseGood,
147
- product: await tx.getRepository(Product).findOne(oi.productId),
148
199
  creator: user,
149
200
  updater: user
150
201
  }
151
202
 
152
- let newOrderProduct: OrderProduct = Object.assign(new OrderProduct(), newOrderInv)
153
- newOrderProduct = {
154
- ...newOrderProduct,
203
+ let newOrderProduct: Partial<OrderProduct> = {
204
+ name: generatedOI.name,
205
+ product: generatedOI.product,
206
+ batchId: generatedOI.batchId,
207
+ packingType: generatedOI.packingType,
208
+ packingSize: generatedOI.packingSize,
209
+ uom: generatedOI.uom,
210
+ domain: warehouseDomain,
211
+ bizplace,
212
+ releaseQty: generatedOI.releaseQty,
213
+ releaseUomValue: generatedOI.releaseUomValue,
155
214
  packQty: 0,
156
215
  actualPackQty: 0,
157
216
  palletQty: 0,
158
217
  actualPalletQty: 0,
159
- status: ORDER_PRODUCT_STATUS.PENDING_ASSIGN
218
+ status: ORDER_PRODUCT_STATUS.PENDING_ASSIGN,
219
+ releaseGood: newReleaseGood,
220
+ creator: user,
221
+ updater: user
160
222
  }
161
223
 
162
224
  newOrderProduct = await tx.getRepository(OrderProduct).save(newOrderProduct)
163
225
 
164
- await tx.getRepository(OrderInventory).save({ ...newOrderInv, orderProduct: newOrderProduct })
165
- }
226
+ await tx.getRepository(OrderInventory).save({ ...generatedOI, orderProduct: newOrderProduct })
166
227
 
167
- // Change the status to PENDING_RECEIVE
228
+ // update inventory locked qty and uom value
229
+ await tx.getRepository(Inventory).update(oi.inventory.id, {
230
+ lockedQty: (oi.inventory?.lockedQty || 0) + generatedOI.releaseQty,
231
+ lockedUomValue: (oi.inventory?.lockedUomValue || 0) + generatedOI.releaseUomValue,
232
+ updater: user
233
+ })
234
+ }
168
235
 
169
236
  return newReleaseGood
170
237
  } catch (error) {
@@ -195,7 +262,7 @@ async function bulkConfirmReleaseGoods(
195
262
  ]
196
263
  })
197
264
 
198
- if (!foundReleaseGoods.length) throw new Error(`Release good order doesn't exists.`)
265
+ if (!foundReleaseGoods.length) throw new Error(`release good order doesn't exists.`)
199
266
  let customerBizplace: Bizplace = foundReleaseGoods[0].bizplace
200
267
 
201
268
  let foundOrderInventories: OrderInventory[] = foundReleaseGoods
@@ -295,6 +362,7 @@ function extractRawReleaseGoods(rawReleaseGoods): Partial<ReleaseGood[]> {
295
362
  oi => oi.sku === item.sku && oi.packingType === item.packingType && oi.packingSize === item.packingSize
296
363
  )
297
364
 
365
+ // if there is duplicated SKU, merge them and sum up the releaseQty
298
366
  if (duplicateSkuIdx >= 0) {
299
367
  releaseGoods[idx].orderInventories[duplicateSkuIdx].releaseQty += item.releaseQty
300
368
  } else {
@@ -2,6 +2,7 @@ import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
4
4
  import { Domain } from '@things-factory/shell'
5
+ import { LOCATION_TYPE } from '@things-factory/warehouse-base'
5
6
 
6
7
  export const bulkReleaseGoodsAvailableItems = {
7
8
  async bulkReleaseGoodsAvailableItems(_: any, { rawReleaseGoods, bizplaceId }, context: any) {
@@ -47,6 +48,7 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
47
48
  CREATE TEMP TABLE temp_order_products(
48
49
  product_id VARCHAR(50),
49
50
  sku VARCHAR(150),
51
+ product_info VARCHAR(250),
50
52
  packing_type VARCHAR(50),
51
53
  packing_size INT,
52
54
  uom VARCHAR(10),
@@ -59,6 +61,8 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
59
61
  `
60
62
  INSERT INTO temp_order_products
61
63
  SELECT p.id AS product_id, js.sku,
64
+ CASE WHEN p.description NOT IN (NULL, '', '-') THEN CONCAT(p.name, '(', p.description, ')')
65
+ ELSE p.name END AS product_info,
62
66
  CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_type ELSE pd.packing_type END,
63
67
  CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_size ELSE pd.packing_size END,
64
68
  CASE WHEN js.uom NOTNULL THEN js.uom ELSE pd.uom END,
@@ -72,16 +76,12 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
72
76
 
73
77
  let availableItems = await tx.query(
74
78
  `
75
- SELECT i.product_id, foo.sku, i.batch_id, i.packing_type, i.packing_size, i.uom,
79
+ WITH inv AS (
80
+ SELECT i.product_id, foo.sku, foo.product_info, i.batch_id, i.packing_type, i.packing_size, i.uom,
76
81
  SUM(i.qty - COALESCE(i.locked_qty, 0)) - COALESCE(
77
82
  (
78
83
  SELECT SUM(oi.release_qty) FROM order_inventories oi
79
- WHERE (
80
- oi.status = 'PENDING'
81
- OR oi.status = 'PENDING_RECEIVE'
82
- OR oi.status = 'PENDING_WORKSHEET'
83
- OR oi.status = 'PENDING_SPLIT'
84
- )
84
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
85
85
  AND oi.inventory_id IS null
86
86
  AND oi.product_id = i.product_id::uuid
87
87
  AND oi.packing_type = i.packing_type
@@ -92,12 +92,7 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
92
92
  SUM(i.uom_value - COALESCE(i.locked_uom_value, 0)) - COALESCE(
93
93
  (
94
94
  SELECT SUM(oi.release_uom_value) FROM order_inventories oi
95
- WHERE (
96
- oi.status = 'PENDING'
97
- OR oi.status = 'PENDING_RECEIVE'
98
- OR oi.status = 'PENDING_WORKSHEET'
99
- OR oi.status = 'PENDING_SPLIT'
100
- )
95
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
101
96
  AND oi.inventory_id IS null
102
97
  AND oi.product_id = i.product_id::uuid
103
98
  AND oi.packing_type = i.packing_type
@@ -106,10 +101,12 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
106
101
  AND oi.bizplace_id = $2
107
102
  ), 0) as "remain_uom_value"
108
103
  FROM inventories i
104
+ LEFT JOIN locations l
105
+ ON i.location_id = l.id
109
106
  INNER JOIN (
110
- SELECT top.product_id, top.sku, top.packing_type, top.packing_size, top.uom
107
+ SELECT top.product_id, top.sku, top.product_info, top.packing_type, top.packing_size, top.uom
111
108
  FROM temp_order_products top
112
- GROUP BY top.product_id, top.sku, top.packing_type, top.packing_size, top.uom
109
+ GROUP BY top.product_id, top.sku, top.product_info, top.packing_type, top.packing_size, top.uom
113
110
  ) AS foo
114
111
  ON i.product_id = foo.product_id::uuid
115
112
  AND i.packing_type = foo.packing_type
@@ -117,10 +114,12 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
117
114
  AND i.uom = foo.uom
118
115
  AND i.domain_id = $1
119
116
  AND i.bizplace_id = $2
120
- GROUP BY i.product_id, foo.sku, i.batch_id, i.packing_type, i.packing_size, i.uom
117
+ WHERE l.type NOT IN ($3, $4)
118
+ GROUP BY i.product_id, foo.sku,foo.product_info, i.batch_id, i.packing_type, i.packing_size, i.uom
121
119
  ORDER BY foo.sku, remain_qty
122
- `,
123
- [domain.id, bizplaceId]
120
+ ) SELECT * FROM inv WHERE remain_qty > 0
121
+ `,
122
+ [domain.id, bizplaceId, LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
124
123
  )
125
124
 
126
125
  await tx.query('DROP TABLE temp_order_products')
@@ -128,6 +127,7 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
128
127
  availableItems = availableItems.map(item => {
129
128
  return {
130
129
  productId: item.product_id,
130
+ productInfo: item.product_info,
131
131
  sku: item.sku,
132
132
  batchId: item.batch_id,
133
133
  packingType: item.packing_type,
@@ -162,33 +162,41 @@ function _extractData(rawData, validatedData) {
162
162
  return val.sku == raw.sku && a === b
163
163
  })
164
164
 
165
- let releaseUomValue = 0
165
+ let releaseUomValue: number = 0
166
166
 
167
167
  // if sku is matched, assign qty and product id
168
168
  if (idx >= 0) {
169
- // assign qty to rawData as much as possible
170
- releaseUomValue =
171
- (Math.round((validatedData[idx]?.remainUomValue / validatedData[idx]?.remainQty) * 100) / 100) * raw.releaseQty
169
+ const uomValuePerQty: number =
170
+ Math.round((validatedData[idx].remainUomValue / validatedData[idx].remainQty) * 100) / 100
172
171
 
172
+ // use Math.round again because 4.2 * 6 = 25.200000000000003
173
+ releaseUomValue = Math.round(uomValuePerQty * raw.releaseQty * 100) / 100
174
+
175
+ // assign qty to rawData as much as possible
173
176
  raw.assignedQty =
174
177
  validatedData[idx].remainQty >= raw.releaseQty
175
178
  ? raw.releaseQty > 0
176
179
  ? raw.releaseQty
177
180
  : 0
178
- : validatedData[idx].remainQty
181
+ : validatedData[idx].remainQty > 0
182
+ ? validatedData[idx].remainQty
183
+ : 0
179
184
 
180
185
  raw.assignedUomValue =
181
186
  validatedData[idx].remainUomValue >= releaseUomValue
182
187
  ? releaseUomValue > 0
183
188
  ? releaseUomValue
184
189
  : 0
185
- : validatedData[idx].remainUomValue
190
+ : validatedData[idx].remainUomValue > 0
191
+ ? validatedData[idx].remainUomValue
192
+ : 0
186
193
 
187
194
  // deduct qty & uomValue from validateData
188
195
  validatedData[idx].remainQty -= raw.assignedQty
189
196
  validatedData[idx].remainUomValue -= raw.assignedUomValue
190
197
 
191
198
  raw.productId = validatedData[idx].productId
199
+ raw.productInfo = validatedData[idx].productInfo
192
200
  raw.packingType = validatedData[idx].packingType
193
201
  raw.packingSize = validatedData[idx].packingSize
194
202
  raw.uom = validatedData[idx].uom
@@ -50,6 +50,7 @@ export const RawReleaseGood = gql`
50
50
  packingSize: Int
51
51
  uom: String
52
52
  productId: String
53
+ productInfo: String
53
54
  sku: String
54
55
  releaseQty: Int
55
56
  releaseUomValue: Float
@@ -1,2 +1,2 @@
1
1
  export * from './order-no-generator'
2
- export * from './inventory-util'
2
+ export * from './inventory-util'
@@ -1,4 +1,4 @@
1
- import { EntityManager, Equal, getRepository, In, Not, Raw, Repository } from 'typeorm'
1
+ import { EntityManager, Equal, getRepository, In, Not, Raw, Repository, SelectQueryBuilder } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
4
  import { Bizplace } from '@things-factory/biz-base'
@@ -15,6 +15,7 @@ import {
15
15
  Pallet
16
16
  } from '@things-factory/warehouse-base'
17
17
 
18
+ import { ORDER_TYPES } from '../constants'
18
19
  import {
19
20
  ArrivalNotice,
20
21
  DeliveryOrder,
@@ -270,6 +271,68 @@ export const InventoryUtil = {
270
271
  if (duplicatedReusablePalletCnt) throw new Error(palletId + ` exists`)
271
272
  },
272
273
 
274
+ /**
275
+ * To pre-assign inventories automatically for orderInventories in Release Goods
276
+ * @param product
277
+ * @param orderInventory
278
+ * @param packingType
279
+ * @param locationSortingRules
280
+ * @param customerBizplace
281
+ * @param domain
282
+ * @param trxMgr
283
+ * @returns orderInventories
284
+ */
285
+ async autoAssignInventoryForRelease(
286
+ product: Product,
287
+ orderInventory: OrderInventory,
288
+ packingType: string,
289
+ locationSortingRules: any = [],
290
+ customerBizplace: Bizplace,
291
+ domain: Domain,
292
+ trxMgr: EntityManager
293
+ ): Promise<OrderInventory[]> {
294
+ let qb: SelectQueryBuilder<Inventory> = trxMgr.getRepository(Inventory).createQueryBuilder('iv')
295
+ qb.leftJoinAndSelect('iv.location', 'loc')
296
+ .andWhere('"iv"."domain_id" = :domainId')
297
+ .andWhere('"iv"."bizplace_id" = :bizplaceId')
298
+ .andWhere('"iv"."packing_type" = :packingType')
299
+ .andWhere('"iv"."product_id" = :productId')
300
+ .andWhere('"iv"."status" = :status')
301
+ .andWhere('"iv"."qty" - COALESCE("iv"."locked_qty", 0) > 0')
302
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
303
+ .setParameters({
304
+ domainId: domain.id,
305
+ bizplaceId: customerBizplace.id,
306
+ packingType: packingType,
307
+ productId: product.id,
308
+ status: INVENTORY_STATUS.STORED,
309
+ locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
310
+ })
311
+
312
+ if (locationSortingRules?.length) {
313
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
314
+ idx === 0
315
+ ? qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
316
+ : qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
317
+ })
318
+ } else {
319
+ qb.addOrderBy('"iv"."created_at"', 'ASC')
320
+ }
321
+
322
+ let inventories: Inventory[] = await qb.getMany()
323
+ if (!inventories?.length) throw new Error(`no inventories found for ${product.sku}`)
324
+
325
+ inventories = inventories.map(inventory => {
326
+ return {
327
+ ...inventory,
328
+ remainQty: inventory.qty - (inventory?.lockedQty || 0),
329
+ remainUomValue: inventory.uomValue - (inventory?.lockedUomValue || 0)
330
+ }
331
+ })
332
+
333
+ return _composeTargetInventories(product, orderInventory, inventories)
334
+ },
335
+
273
336
  /**
274
337
  * @summary Do transaction on inventory record
275
338
  * @description It will update inventory after set a temp (domain, updater)
@@ -617,3 +680,68 @@ export async function switchLocationStatus(
617
680
 
618
681
  return location
619
682
  }
683
+
684
+ export function _composeTargetInventories(product: Product, record: any, inventories: Inventory[]): OrderInventory[] {
685
+ let leftReleaseQty: number = record.releaseQty
686
+ let leftReleaseUomValue: number = record.releaseUomValue
687
+ let compReleaseQty: number = 0
688
+ let compReleaseUomValue: number = 0
689
+ let totalInventoryQty: number = inventories.reduce((total, inventory) => total + inventory.remainQty, 0)
690
+
691
+ if (totalInventoryQty < record.releaseQty) {
692
+ throw new Error(`invalid release qty for ${product?.sku}`)
693
+ }
694
+
695
+ let orderInventories: Partial<OrderInventory[]> = []
696
+ let idx = 0
697
+ while (compReleaseQty < record.releaseQty) {
698
+ const inventory = inventories[idx]
699
+ const {
700
+ packingType,
701
+ packingSize,
702
+ batchId,
703
+ uom
704
+ }: { packingType: string; packingSize: number; batchId: string; uom: string } = inventory
705
+
706
+ let orderInventory: OrderInventory = new OrderInventory()
707
+
708
+ if (inventory.remainQty > leftReleaseQty) {
709
+ const uomValuePerQty: number = Math.round((inventory.remainUomValue / inventory.remainQty) * 100) / 100
710
+
711
+ compReleaseQty += leftReleaseQty
712
+ compReleaseUomValue += leftReleaseUomValue
713
+
714
+ orderInventory = {
715
+ ...orderInventory,
716
+ releaseQty: leftReleaseQty,
717
+ releaseUomValue: Math.round(leftReleaseQty * uomValuePerQty * 100) / 100
718
+ }
719
+ } else {
720
+ compReleaseQty += inventory.remainQty
721
+ compReleaseUomValue += inventory.remainUomValue
722
+ leftReleaseQty -= inventory.remainQty
723
+ leftReleaseUomValue -= inventory.remainUomValue
724
+
725
+ orderInventory = {
726
+ ...orderInventory,
727
+ releaseQty: inventory.remainQty,
728
+ releaseUomValue: inventory.remainUomValue
729
+ }
730
+ }
731
+
732
+ orderInventories.push({
733
+ ...orderInventory,
734
+ inventory,
735
+ packingType,
736
+ packingSize,
737
+ batchId,
738
+ uom,
739
+ product,
740
+ type: ORDER_TYPES.RELEASE_OF_GOODS
741
+ })
742
+
743
+ idx++
744
+ }
745
+
746
+ return orderInventories
747
+ }