@things-factory/worksheet-base 3.7.6 → 3.7.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist-server/constants/template.js +1 -0
  2. package/dist-server/constants/template.js.map +1 -1
  3. package/dist-server/controllers/index.js +1 -0
  4. package/dist-server/controllers/index.js.map +1 -1
  5. package/dist-server/controllers/outbound/picking-worksheet-controller.js +111 -120
  6. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/render-manifest.js +64 -0
  8. package/dist-server/controllers/render-manifest.js.map +1 -0
  9. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +9 -13
  10. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +10 -14
  12. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
  14. package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
  15. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -4
  16. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  17. package/dist-server/graphql/types/worksheet/index.js +2 -0
  18. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  19. package/dist-server/routes.js +4 -0
  20. package/dist-server/routes.js.map +1 -1
  21. package/package.json +8 -8
  22. package/server/constants/template.ts +1 -0
  23. package/server/controllers/index.ts +1 -0
  24. package/server/controllers/outbound/picking-worksheet-controller.ts +142 -149
  25. package/server/controllers/render-manifest.ts +68 -0
  26. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +12 -15
  27. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +11 -14
  28. package/server/graphql/resolvers/worksheet/picking/picking.ts +5 -4
  29. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +7 -4
  30. package/server/graphql/types/worksheet/index.ts +3 -1
  31. package/server/routes.ts +5 -0
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTrackingNo = exports.packingWorksheetResolver = void 0;
4
- const typeorm_1 = require("typeorm");
5
4
  const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
6
5
  const marketplace_base_1 = require("@things-factory/marketplace-base");
7
6
  const sales_base_1 = require("@things-factory/sales-base");
@@ -9,6 +8,7 @@ const warehouse_base_1 = require("@things-factory/warehouse-base");
9
8
  const constants_1 = require("../../../constants");
10
9
  const controllers_1 = require("../../../controllers");
11
10
  const utils_1 = require("../../../utils");
11
+ const sales_base_2 = require("@things-factory/sales-base");
12
12
  exports.packingWorksheetResolver = {
13
13
  async packingWorksheet(_, { releaseGoodNo }, context) {
14
14
  var _a;
@@ -25,19 +25,15 @@ exports.packingWorksheetResolver = {
25
25
  const binLocation = await tx.getRepository(warehouse_base_1.Location).findOne({
26
26
  where: { domain, name: releaseGoodNo }
27
27
  });
28
- const orderInventoryByBin = await tx.getRepository(sales_base_1.OrderInventory).findOne({
29
- where: {
30
- domain, binLocation, status: (0, typeorm_1.In)([sales_base_1.ORDER_INVENTORY_STATUS.PACKING, sales_base_1.ORDER_INVENTORY_STATUS.PACKED])
31
- },
32
- order: {
33
- createdAt: 'ASC'
34
- },
35
- relations: [
36
- 'releaseGood',
37
- 'releaseGood.bizplace',
38
- 'releaseGood.bizplace.domain'
39
- ]
40
- });
28
+ const qb = tx.getRepository(sales_base_1.OrderInventory).createQueryBuilder('orderInventory');
29
+ qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
30
+ .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
31
+ .innerJoinAndSelect('bizplace.domain', 'domain')
32
+ .where('orderInventory.domain_id = :domainId', { domainId: domain.id })
33
+ .andWhere('orderInventory.status IN (:...orderInventoryStatus)', { orderInventoryStatus: [sales_base_1.ORDER_INVENTORY_STATUS.PACKING, sales_base_1.ORDER_INVENTORY_STATUS.PACKED] })
34
+ .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
35
+ .andWhere('releaseGood.status = :status', { status: sales_base_2.ORDER_STATUS.PACKING });
36
+ const orderInventoryByBin = await qb.getOne();
41
37
  if (orderInventoryByBin === null || orderInventoryByBin === void 0 ? void 0 : orderInventoryByBin.releaseGood) {
42
38
  releaseGoodNo = orderInventoryByBin.releaseGood.name;
43
39
  releaseGood = orderInventoryByBin.releaseGood;
@@ -1 +1 @@
1
- {"version":3,"file":"packing-worksheet.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/packing-worksheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packing-worksheet.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/packing-worksheet.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.picking = exports.pickingResolver = void 0;
4
4
  const controllers_1 = require("../../../../controllers");
5
5
  exports.pickingResolver = {
6
- async picking(_, { worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation }, context) {
6
+ async picking(_, { worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber }, context) {
7
7
  const { tx, domain, user } = context.state;
8
- await picking(tx, domain, user, worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation);
8
+ await picking(tx, domain, user, worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber);
9
9
  }
10
10
  };
11
- async function picking(tx, domain, user, worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation) {
11
+ async function picking(tx, domain, user, worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber) {
12
12
  const worksheetController = new controllers_1.PickingWorksheetController(tx, domain, user);
13
- await worksheetController.picking(worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation);
13
+ await worksheetController.picking(worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber);
14
14
  }
15
15
  exports.picking = picking;
16
16
  //# sourceMappingURL=picking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picking.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/picking.ts"],"names":[],"mappings":";;;AAGA,yDAAoE;AAEvD,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,OAAO,CAAC,CAAM,EAAE,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,OAAY;QACzH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACtH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,OAAO,CAC3B,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,mBAA2B,EAC3B,aAAqB,EACrB,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,WAAoB;IAEpB,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,MAAM,mBAAmB,CAAC,OAAO,CAAC,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;AACxH,CAAC;AAbD,0BAaC"}
1
+ {"version":3,"file":"picking.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/picking.ts"],"names":[],"mappings":";;;AAGA,yDAAoE;AAEvD,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,OAAO,CAAC,CAAM,EAAE,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,OAAY;QACvI,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IACpI,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,OAAO,CAC3B,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,mBAA2B,EAC3B,aAAqB,EACrB,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,WAAoB,EACpB,YAAqB;IAErB,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,MAAM,mBAAmB,CAAC,OAAO,CAAC,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;AACtI,CAAC;AAdD,0BAcC"}
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.scanProductPicking = exports.scanProductPickingResolver = void 0;
4
4
  const controllers_1 = require("../../../../controllers");
5
5
  exports.scanProductPickingResolver = {
6
- async scanProductPicking(_, { worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation }, context) {
6
+ async scanProductPicking(_, { worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber }, context) {
7
7
  const { tx, domain, user } = context.state;
8
- await scanProductPicking(tx, domain, user, worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation);
8
+ await scanProductPicking(tx, domain, user, worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber);
9
9
  }
10
10
  };
11
- async function scanProductPicking(tx, domain, user, worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation) {
11
+ async function scanProductPicking(tx, domain, user, worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber) {
12
12
  const worksheetController = new controllers_1.PickingWorksheetController(tx, domain, user);
13
- await worksheetController.scanProductPicking(worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation);
13
+ await worksheetController.scanProductPicking(worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber);
14
14
  }
15
15
  exports.scanProductPicking = scanProductPicking;
16
16
  //# sourceMappingURL=scan-product-picking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan-product-picking.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/scan-product-picking.ts"],"names":[],"mappings":";;;AAGA,yDAAoE;AAEvD,QAAA,0BAA0B,GAAG;IACxC,KAAK,CAAC,kBAAkB,CACtB,CAAM,EACN,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,EAC7E,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,kBAAkB,CACtB,EAAE,EACF,MAAM,EACN,IAAI,EACJ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,CACZ,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,kBAAkB,CACtC,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,mBAA2B,EAC3B,aAAqB,EACrB,cAAsB,EACtB,QAAgB,EAChB,WAAoB;IAEpB,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,MAAM,mBAAmB,CAAC,kBAAkB,CAC1C,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,CACZ,CAAA;AACH,CAAC;AAlBD,gDAkBC"}
1
+ {"version":3,"file":"scan-product-picking.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/scan-product-picking.ts"],"names":[],"mappings":";;;AAGA,yDAAoE;AAEvD,QAAA,0BAA0B,GAAG;IACxC,KAAK,CAAC,kBAAkB,CACtB,CAAM,EACN,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,EAC3F,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,kBAAkB,CACtB,EAAE,EACF,MAAM,EACN,IAAI,EACJ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,YAAY,CACb,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,kBAAkB,CACtC,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,mBAA2B,EAC3B,aAAqB,EACrB,cAAsB,EACtB,QAAgB,EAChB,WAAoB,EACpB,YAAqB;IAErB,MAAM,mBAAmB,GAA+B,IAAI,wCAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,MAAM,mBAAmB,CAAC,kBAAkB,CAC1C,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,YAAY,CACb,CAAA;AACH,CAAC;AApBD,gDAoBC"}
@@ -293,6 +293,7 @@ exports.Mutation = `
293
293
  locationName: String!
294
294
  releaseQty: Int!
295
295
  binLocation: String
296
+ serialNumber: String
296
297
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
297
298
 
298
299
  scanProductPicking (
@@ -301,6 +302,7 @@ exports.Mutation = `
301
302
  productBarcode: String!
302
303
  cartonId: String!
303
304
  binLocation: String
305
+ serialNumber: String
304
306
  ): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
305
307
 
306
308
  sortingProduct (
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,yEAAmE;AACnE,6DAAuD;AACvD,mEAA6D;AAC7D,mDAA8C;AAC9C,+DAAyD;AACzD,6DAAwD;AACxD,+DAA0D;AAC1D,+DAAyD;AACzD,2EAAqE;AACrE,uEAAiE;AACjE,iFAA0E;AAC1E,mDAA8C;AAC9C,2EAAqE;AACrE,yDAAoD;AACpD,qEAA+D;AAC/D,qEAA+D;AAC/D,+DAAyD;AACzD,2CAAuC;AACvC,mEAA6D;AAC7D,qDAAgD;AAChD,qDAAgD;AAChD,uDAAkD;AAClD,2EAAqE;AAExD,QAAA,QAAQ,GAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqfrC,CAAA;AAEY,QAAA,KAAK,GAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0IlC,CAAA;AAEY,QAAA,KAAK,GAAiB;IACjC,qBAAS;IACT,uBAAU;IACV,4BAAY;IACZ,gCAAc;IACd,8BAAa;IACb,iDAAsB;IACtB,6CAAoB;IACpB,2CAAmB;IACnB,6CAAoB;IACpB,mDAAuB;IACvB,uCAAiB;IACjB,uCAAiB;IACjB,qCAAgB;IAChB,uCAAiB;IACjB,8BAAa;IACb,4BAAY;IACZ,sCAAiB;IACjB,2CAAmB;IACnB,wCAAkB;IAClB,+CAAqB;IACrB,kCAAe;IACf,mDAAuB;IACvB,mDAAuB;IACvB,wDAAyB;CAC1B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,yEAAmE;AACnE,6DAAuD;AACvD,mEAA6D;AAC7D,mDAA8C;AAC9C,+DAAyD;AACzD,6DAAwD;AACxD,+DAA0D;AAC1D,+DAAyD;AACzD,2EAAqE;AACrE,uEAAiE;AACjE,iFAA0E;AAC1E,mDAA8C;AAC9C,2EAAqE;AACrE,yDAAoD;AACpD,qEAA+D;AAC/D,qEAA+D;AAC/D,+DAAyD;AACzD,2CAAuC;AACvC,mEAA6D;AAC7D,qDAAgD;AAChD,qDAAgD;AAChD,uDAAkD;AAClD,2EAAqE;AAExD,QAAA,QAAQ,GAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAufrC,CAAA;AAEY,QAAA,KAAK,GAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0IlC,CAAA;AAEY,QAAA,KAAK,GAAgB;IAChC,qBAAS;IACT,uBAAU;IACV,4BAAY;IACZ,gCAAc;IACd,8BAAa;IACb,iDAAsB;IACtB,6CAAoB;IACpB,2CAAmB;IACnB,6CAAoB;IACpB,mDAAuB;IACvB,uCAAiB;IACjB,uCAAiB;IACjB,qCAAgB;IAChB,uCAAiB;IACjB,8BAAa;IACb,4BAAY;IACZ,sCAAiB;IACjB,2CAAmB;IACnB,wCAAkB;IAClB,+CAAqB;IACrB,kCAAe;IACf,mDAAuB;IACvB,mDAAuB;IACvB,wDAAyB;CAC1B,CAAA"}
@@ -4,6 +4,7 @@ const render_elccl_grn_1 = require("./controllers/render-elccl-grn");
4
4
  const render_grn_1 = require("./controllers/render-grn");
5
5
  const render_job_sheet_1 = require("./controllers/render-job-sheet");
6
6
  const render_kimeda_grn_1 = require("./controllers/render-kimeda-grn");
7
+ const render_manifest_1 = require("./controllers/render-manifest");
7
8
  const render_manual_do_1 = require("./controllers/render-manual-do");
8
9
  const render_orientage_do_1 = require("./controllers/render-orientage-do");
9
10
  const render_orientage_grn_1 = require("./controllers/render-orientage-grn");
@@ -37,5 +38,8 @@ process.on('bootstrap-module-domain-private-route', (app, routes) => {
37
38
  routes.get('/view_job_sheet/:ganNo/:timezoneOffSet', async (context, next) => {
38
39
  context.body = await (0, render_job_sheet_1.renderJobSheet)(context.params, context);
39
40
  });
41
+ routes.get('/view_manifest/:manifestNo', async (context, next) => {
42
+ context.body = await (0, render_manifest_1.renderManifest)(context.params, context);
43
+ });
40
44
  });
41
45
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qEAA+D;AAC/D,yDAAoD;AACpD,qEAA+D;AAC/D,uEAAiE;AACjE,qEAA+D;AAC/D,2EAAqE;AACrE,6EAAuE;AACvE,6DAAuD;AACvD,uEAAiE;AAEjE,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACzE,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,yBAAU,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACtE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,uCAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACnE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,sBAAS,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5E,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,mCAAe,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,yCAAkB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,mCAAe,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,wCAAwC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3E,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qEAA+D;AAC/D,yDAAoD;AACpD,qEAA+D;AAC/D,uEAAiE;AACjE,mEAA8D;AAC9D,qEAA+D;AAC/D,2EAAqE;AACrE,6EAAuE;AACvE,6DAAuD;AACvD,uEAAiE;AAEjE,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACzE,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,yBAAU,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACtE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,uCAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACnE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,sBAAS,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5E,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,mCAAe,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,yCAAkB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,mCAAe,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,wCAAwC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3E,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,iCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,gCAAc,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "3.7.6",
3
+ "version": "3.7.10",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -28,16 +28,16 @@
28
28
  "@things-factory/biz-base": "^3.7.5",
29
29
  "@things-factory/document-template-base": "^3.7.5",
30
30
  "@things-factory/id-rule-base": "^3.7.6",
31
- "@things-factory/integration-lmd": "^3.7.5",
32
- "@things-factory/integration-marketplace": "^3.7.6",
33
- "@things-factory/integration-sellercraft": "^3.7.5",
34
- "@things-factory/marketplace-base": "^3.7.6",
31
+ "@things-factory/integration-lmd": "^3.7.7",
32
+ "@things-factory/integration-marketplace": "^3.7.9",
33
+ "@things-factory/integration-sellercraft": "^3.7.7",
34
+ "@things-factory/marketplace-base": "^3.7.10",
35
35
  "@things-factory/notification": "^3.7.5",
36
- "@things-factory/sales-base": "^3.7.6",
36
+ "@things-factory/sales-base": "^3.7.10",
37
37
  "@things-factory/setting-base": "^3.7.5",
38
38
  "@things-factory/shell": "^3.7.5",
39
39
  "@things-factory/transport-base": "^3.7.5",
40
- "@things-factory/warehouse-base": "^3.7.6"
40
+ "@things-factory/warehouse-base": "^3.7.10"
41
41
  },
42
- "gitHead": "d9d72c07fc3b01af2ede46808ec0aced3241ed51"
42
+ "gitHead": "dc4aa344ee524651b4e633c3647c85c8daad8eb6"
43
43
  }
@@ -3,6 +3,7 @@ export const TEMPLATE_TYPE = {
3
3
  CO_TEMPLATE: 'CO_TEMPLATE',
4
4
  GRN_TEMPLATE: 'GRN_TEMPLATE',
5
5
  JOB_TEMPLATE: 'JOB_TEMPLATE',
6
+ MANIFEST_TEMPLATE: 'MANIFEST_TEMPLATE',
6
7
  COP: 'COP',
7
8
  SIGNATURE: 'SIGNATURE',
8
9
  LOGO: 'LOGO'
@@ -7,6 +7,7 @@ export * from './render-kimeda-grn'
7
7
  export * from './render-orientage-grn'
8
8
  export * from './render-orientage-do'
9
9
  export * from './render-seebuu-grn'
10
+ export * from './render-manifest'
10
11
 
11
12
  /* Worksheet Controllers */
12
13
  export * from './worksheet-controller'
@@ -387,8 +387,9 @@ export class PickingWorksheetController extends VasWorksheetController {
387
387
  worksheetType: string,
388
388
  productBarcode: string,
389
389
  cartonId: string,
390
- binLocation?: string
391
- ): Promise<void> {
390
+ binLocation?: string,
391
+ serialNumber?: string
392
+ ): Promise<OrderInventory> {
392
393
  try {
393
394
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
394
395
  worksheetDetailName,
@@ -411,46 +412,27 @@ export class PickingWorksheetController extends VasWorksheetController {
411
412
  const product: Product = targetInventory.product
412
413
  let inventory: Inventory = targetInventory.inventory
413
414
 
415
+ //validation to prevent duplicated picking
416
+ let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
417
+ where: { domain: this.domain, id: targetInventory.id, status: ORDER_INVENTORY_STATUS.PICKING }
418
+ })
419
+ if (!oiValidate)
420
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `is done`))
421
+
414
422
  //validation to prevent over release
415
423
  if (inventory.qty <= 0)
416
424
  throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
417
425
 
426
+ if (inventory.cartonId !== cartonId)
427
+ throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
428
+
418
429
  const packingType: string = inventory.packingType
419
430
  const packingSize: number = inventory.packingSize
420
431
 
421
432
  let pickedQty: number = 1
422
433
  const releaseQty: number = targetInventory.releaseQty
423
434
 
424
- // bin picking validation
425
- const binPickingSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
426
- where: {
427
- domain: this.domain,
428
- name: 'enable-bin-picking'
429
- }
430
- })
431
- if (binPickingSetting != undefined && (binPickingSetting.value).toLowerCase() == 'true') {
432
- if (binLocation) {
433
- const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
434
- where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
435
- })
436
-
437
- if (!foundBinLocation)
438
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
439
-
440
- targetInventory.binLocation = foundBinLocation
441
-
442
- //// Temporarily disable Bin Usage Tracking
443
- // await this.trxMgr.getRepository(Location).update(
444
- // { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN },
445
- // { status: LOCATION_STATUS.OCCUPIED }
446
- // )
447
- } else {
448
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
449
- }
450
- }
451
-
452
- if (inventory.cartonId !== cartonId)
453
- throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
435
+ targetInventory = await this.checkAndSetBinPicking(targetInventory, binLocation)
454
436
 
455
437
  // search for matching product barcode
456
438
  const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
@@ -477,47 +459,17 @@ export class PickingWorksheetController extends VasWorksheetController {
477
459
  throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
478
460
  }
479
461
  }
480
- console.log('')
481
-
482
- targetInventory.pickedQty = Boolean(targetInventory?.pickedQty) ? targetInventory.pickedQty + pickedQty : pickedQty
483
- if (targetInventory.pickedQty == releaseQty) {
484
- const leftQty: number = inventory.qty - releaseQty
485
- if (leftQty < 0) {
486
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
487
- }
488
-
489
- targetInventory.status = ORDER_INVENTORY_STATUS.PICKED
490
-
491
- inventory.qty -= targetInventory.releaseQty
492
- inventory.uomValue = Math.round((inventory.uomValue - targetInventory.releaseUomValue) * 100) / 100
493
- inventory.lockedQty = inventory.lockedQty - targetInventory.releaseQty
494
- inventory.lockedUomValue = Math.round((inventory.lockedUomValue - targetInventory.releaseUomValue) * 100) / 100
495
- inventory = await this.transactionInventory(
496
- inventory,
497
- releaseGood,
498
- -targetInventory.releaseQty,
499
- -targetInventory.releaseUomValue,
500
- INVENTORY_TRANSACTION_TYPE.PICKING
501
- )
502
462
 
503
- worksheetDetail.status = WORKSHEET_STATUS.DONE
504
- worksheetDetail.updater = this.user
505
- await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
463
+ if (product?.isRequireSerialNumberScanning) {
464
+ if ((!serialNumber || serialNumber == ''))
465
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `require serial number`))
506
466
 
507
- if (leftQty === 0) {
508
- inventory.status = INVENTORY_STATUS.TERMINATED
509
- await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
467
+ if (serialNumber) {
468
+ targetInventory.serialNumber = JSON.stringify(targetInventory.serialNumber ? [...(JSON.parse(targetInventory.serialNumber)), serialNumber] : [serialNumber])
510
469
  }
511
470
  }
512
471
 
513
- //validation to prevent duplicated picking
514
- let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
515
- where: { domain: this.domain, id: targetInventory.id, status: ORDER_INVENTORY_STATUS.PICKING }
516
- })
517
- if (!oiValidate)
518
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `is done`))
519
-
520
- await this.updateOrderTargets([targetInventory])
472
+ await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
521
473
 
522
474
  } catch (error) {
523
475
  throw error
@@ -529,100 +481,75 @@ export class PickingWorksheetController extends VasWorksheetController {
529
481
  worksheetType: string,
530
482
  palletId: string,
531
483
  locationName: string,
532
- releaseQty: number,
533
- binLocation?: string
484
+ pickedQty: number,
485
+ binLocation?: string,
486
+ serialNumber?: string
534
487
  ): Promise<void> {
535
- let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
536
- worksheetDetailName,
537
- worksheetType,
538
- [
539
- 'worksheet',
540
- 'targetInventory',
541
- 'targetInventory.releaseGood',
542
- 'targetInventory.inventory',
543
- 'targetInventory.inventory.location'
544
- ]
545
- )
546
- const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
547
- let targetInventory: OrderInventory = worksheetDetail.targetInventory
548
- let inventory: Inventory = targetInventory.inventory
549
- if (inventory.palletId !== palletId)
550
- throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Pallet ID', palletId, inventory.palletId))
551
-
552
- const leftQty: number = inventory.qty - releaseQty
553
- if (leftQty < 0) {
554
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
555
- }
488
+ try {
489
+ let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
490
+ worksheetDetailName,
491
+ worksheetType,
492
+ [
493
+ 'worksheet',
494
+ 'targetInventory',
495
+ 'targetInventory.releaseGood',
496
+ 'targetInventory.inventory',
497
+ 'targetInventory.inventory.location',
498
+ 'targetInventory.product',
499
+ ]
500
+ )
556
501
 
502
+ const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
503
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
504
+ const product: Product = targetInventory.product
505
+ let inventory: Inventory = targetInventory.inventory
557
506
 
558
- // bin picking validation
559
- const binPickingSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
560
- where: {
561
- domain: this.domain,
562
- name: 'enable-bin-picking'
563
- }
564
- })
565
- if (binPickingSetting != undefined && (binPickingSetting.value).toLowerCase() == 'true') {
566
- if (binLocation) {
567
- const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
568
- where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
569
- })
507
+ //validation to prevent duplicated picking
508
+ let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
509
+ where: { domain: this.domain, id: targetInventory.id, status: ORDER_INVENTORY_STATUS.PICKING }
510
+ })
511
+ if (!oiValidate)
512
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `is done`))
570
513
 
571
- if (!foundBinLocation)
572
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
514
+ //validation to prevent over release
515
+ if (inventory.qty <= 0)
516
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
573
517
 
574
- targetInventory.binLocation = foundBinLocation
518
+ if (inventory.palletId !== palletId)
519
+ throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Pallet ID', palletId, inventory.palletId))
575
520
 
576
- //// Temporarily disable Bin Usage Tracking
577
- // await this.trxMgr.getRepository(Location).update(
578
- // { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN },
579
- // { status: LOCATION_STATUS.OCCUPIED }
580
- // )
581
- } else {
582
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
583
- }
584
- }
585
521
 
586
- targetInventory.pickedQty = releaseQty
587
- targetInventory.status = ORDER_INVENTORY_STATUS.PICKED
588
- await this.updateOrderTargets([targetInventory])
589
-
590
- inventory.qty -= targetInventory.releaseQty
591
- inventory.uomValue = Math.round((inventory.uomValue - targetInventory.releaseUomValue) * 100) / 100
592
- inventory.lockedQty = inventory.lockedQty - targetInventory.releaseQty
593
- inventory.lockedUomValue = Math.round((inventory.lockedUomValue - targetInventory.releaseUomValue) * 100) / 100
594
- inventory = await this.transactionInventory(
595
- inventory,
596
- releaseGood,
597
- -targetInventory.releaseQty,
598
- -targetInventory.releaseUomValue,
599
- INVENTORY_TRANSACTION_TYPE.PICKING
600
- )
522
+ if (product?.isRequireSerialNumberScanning) {
523
+ if ((!serialNumber || serialNumber == ''))
524
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `require serial number`))
601
525
 
602
- worksheetDetail.status = WORKSHEET_STATUS.DONE
603
- worksheetDetail.updater = this.user
604
- await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
526
+ if (serialNumber) {
527
+ targetInventory.serialNumber = JSON.stringify(targetInventory.serialNumber ? [...(JSON.parse(targetInventory.serialNumber)), serialNumber] : [serialNumber])
528
+ }
529
+ }
605
530
 
606
- if (leftQty === 0) {
607
- inventory.status = INVENTORY_STATUS.TERMINATED
608
- await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
609
- }
531
+ targetInventory = await this.checkAndSetBinPicking(targetInventory, binLocation)
610
532
 
611
- const fromLocation: Location = targetInventory.inventory.location
612
- if (locationName) {
613
- const toLocation: Location = await this.trxMgr.getRepository(Location).findOne({
614
- where: { domain: this.domain, name: locationName },
615
- relations: ['warehouse']
616
- })
533
+ await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
534
+
535
+ const fromLocation: Location = targetInventory.inventory.location
536
+ if (locationName) {
537
+ const toLocation: Location = await this.trxMgr.getRepository(Location).findOne({
538
+ where: { domain: this.domain, name: locationName },
539
+ relations: ['warehouse']
540
+ })
617
541
 
618
- if (!toLocation) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))
542
+ if (!toLocation) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))
619
543
 
620
- if (fromLocation.id !== toLocation.id) {
621
- inventory.location = toLocation
622
- inventory.warehouse = toLocation.warehouse
623
- inventory.zone = toLocation.zone
624
- inventory = await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.RELOCATE)
544
+ if (fromLocation.id !== toLocation.id) {
545
+ inventory.location = toLocation
546
+ inventory.warehouse = toLocation.warehouse
547
+ inventory.zone = toLocation.zone
548
+ inventory = await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.RELOCATE)
549
+ }
625
550
  }
551
+ } catch (error) {
552
+ throw error
626
553
  }
627
554
  }
628
555
 
@@ -1002,4 +929,70 @@ export class PickingWorksheetController extends VasWorksheetController {
1002
929
 
1003
930
  return worksheetDetails
1004
931
  }
932
+
933
+ private async checkAndSetBinPicking(orderInventory, binLocation) {
934
+ // bin picking validation
935
+ const binPickingSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
936
+ where: {
937
+ domain: this.domain,
938
+ name: 'enable-bin-picking'
939
+ }
940
+ })
941
+ if (binPickingSetting != undefined && (binPickingSetting.value).toLowerCase() == 'true') {
942
+ if (binLocation) {
943
+ const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
944
+ where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
945
+ })
946
+
947
+ if (!foundBinLocation)
948
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
949
+
950
+ orderInventory.binLocation = foundBinLocation
951
+ } else {
952
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
953
+ }
954
+ }
955
+
956
+ return orderInventory
957
+ }
958
+
959
+ private async updatePickingTransaction(releaseGood, orderInventory, worksheetDetail, inventory, pickedQty) {
960
+ const releaseQty: number = orderInventory.releaseQty
961
+
962
+ orderInventory.pickedQty = Boolean(orderInventory?.pickedQty) ? orderInventory.pickedQty + pickedQty : pickedQty
963
+ if (orderInventory.pickedQty == releaseQty) {
964
+ const leftQty: number = inventory.qty - releaseQty
965
+ if (leftQty < 0) {
966
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
967
+ }
968
+
969
+ orderInventory.status = ORDER_INVENTORY_STATUS.PICKED
970
+
971
+ inventory.qty -= orderInventory.releaseQty
972
+ inventory.uomValue = Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100
973
+ inventory.lockedQty = inventory.lockedQty - orderInventory.releaseQty
974
+ inventory.lockedUomValue = Math.round((inventory.lockedUomValue - orderInventory.releaseUomValue) * 100) / 100
975
+ inventory = await this.transactionInventory(
976
+ inventory,
977
+ releaseGood,
978
+ -orderInventory.releaseQty,
979
+ -orderInventory.releaseUomValue,
980
+ INVENTORY_TRANSACTION_TYPE.PICKING
981
+ )
982
+
983
+ worksheetDetail.status = WORKSHEET_STATUS.DONE
984
+ worksheetDetail.updater = this.user
985
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
986
+
987
+ if (leftQty === 0) {
988
+ inventory.status = INVENTORY_STATUS.TERMINATED
989
+ await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
990
+ }
991
+ }
992
+
993
+ await this.updateOrderTargets([orderInventory])
994
+
995
+ return orderInventory
996
+ }
1005
997
  }
998
+