@things-factory/integration-sftp 5.0.0-alpha.9 → 5.0.0-zeta.1

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 (43) hide show
  1. package/dist-server/controllers/herbalife/apis/create-serial-number.js +47 -0
  2. package/dist-server/controllers/herbalife/apis/create-serial-number.js.map +1 -0
  3. package/dist-server/controllers/herbalife/apis/create-shipment.js +63 -5
  4. package/dist-server/controllers/herbalife/apis/create-shipment.js.map +1 -1
  5. package/dist-server/controllers/herbalife/apis/index.js +1 -0
  6. package/dist-server/controllers/herbalife/apis/index.js.map +1 -1
  7. package/dist-server/controllers/herbalife/herbalife.js +15 -62
  8. package/dist-server/controllers/herbalife/herbalife.js.map +1 -1
  9. package/dist-server/controllers/sftp-api/index.js +7 -0
  10. package/dist-server/controllers/sftp-api/index.js.map +1 -1
  11. package/dist-server/service/sftp/sftp-mutation.js +70 -69
  12. package/dist-server/service/sftp/sftp-mutation.js.map +1 -1
  13. package/dist-server/service/sftp/sftp-query.js +1 -1
  14. package/dist-server/service/sftp/sftp-query.js.map +1 -1
  15. package/dist-server/service/sftp/sftp-type.js +8 -0
  16. package/dist-server/service/sftp/sftp-type.js.map +1 -1
  17. package/dist-server/service/sftp/sftp.js +23 -1
  18. package/dist-server/service/sftp/sftp.js.map +1 -1
  19. package/dist-server/sftp-const.js +6 -2
  20. package/dist-server/sftp-const.js.map +1 -1
  21. package/dist-server/sftp-s3.js +2 -2
  22. package/dist-server/sftp-s3.js.map +1 -1
  23. package/dist-server/util/generate-files.js +30 -0
  24. package/dist-server/util/generate-files.js.map +1 -0
  25. package/dist-server/util/index.js +1 -1
  26. package/dist-server/util/index.js.map +1 -1
  27. package/package.json +7 -7
  28. package/server/controllers/herbalife/apis/create-serial-number.ts +51 -0
  29. package/server/controllers/herbalife/apis/create-shipment.ts +73 -5
  30. package/server/controllers/herbalife/apis/index.ts +1 -0
  31. package/server/controllers/herbalife/herbalife.ts +23 -71
  32. package/server/controllers/sftp-api/index.ts +3 -0
  33. package/server/service/sftp/sftp-mutation.ts +68 -67
  34. package/server/service/sftp/sftp-query.ts +1 -1
  35. package/server/service/sftp/sftp-type.ts +7 -1
  36. package/server/service/sftp/sftp.ts +22 -1
  37. package/server/sftp-const.ts +5 -1
  38. package/server/sftp-s3.ts +3 -2
  39. package/server/util/generate-files.ts +33 -0
  40. package/server/util/index.ts +1 -1
  41. package/dist-server/util/generate-file.js +0 -27
  42. package/dist-server/util/generate-file.js.map +0 -1
  43. package/server/util/generate-file.ts +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../server/service/sftp/sftp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../server/service/sftp/sftp.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMPLETEFAILEDDATAPATH = exports.COMPLETESUCCESSDATAPATH = exports.COMPLETEDATAPATH = exports.FAILEDDATAPATH = exports.SUCCESSDATAPATH = exports.SUBMITDATAPATH = exports.SFTPFILESTORAGE = void 0;
3
+ exports.BACKUPPATH = exports.SNFAILEDDATAPATH = exports.SNSUCCESSDATAPATH = exports.SNSUBMITDATAPATH = exports.COMPLETEFAILEDDATAPATH = exports.COMPLETESUCCESSDATAPATH = exports.COMPLETEDATAPATH = exports.FAILEDDATAPATH = exports.SUCCESSDATAPATH = exports.SUBMITDATAPATH = exports.SFTPFILESTORAGE = void 0;
4
4
  const env_1 = require("@things-factory/env");
5
5
  exports.SFTPFILESTORAGE = env_1.config.get('sftpFileStorage');
6
6
  exports.SUBMITDATAPATH = '/sob/data';
7
7
  exports.SUCCESSDATAPATH = '/sob/success';
8
8
  exports.FAILEDDATAPATH = '/sob/failed';
9
- exports.COMPLETEDATAPATH = '/oc/data';
9
+ exports.COMPLETEDATAPATH = '/oc/data01';
10
10
  exports.COMPLETESUCCESSDATAPATH = '/oc/success';
11
11
  exports.COMPLETEFAILEDDATAPATH = '/oc/failed';
12
+ exports.SNSUBMITDATAPATH = '/sn/data';
13
+ exports.SNSUCCESSDATAPATH = '/sn/success';
14
+ exports.SNFAILEDDATAPATH = '/sn/failed';
15
+ exports.BACKUPPATH = 'hatiosea/';
12
16
  //# sourceMappingURL=sftp-const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sftp-const.js","sourceRoot":"","sources":["../server/sftp-const.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAEjC,QAAA,eAAe,GAAQ,YAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACpD,QAAA,cAAc,GAAW,WAAW,CAAA;AACpC,QAAA,eAAe,GAAW,cAAc,CAAA;AACxC,QAAA,cAAc,GAAW,aAAa,CAAA;AACtC,QAAA,gBAAgB,GAAW,UAAU,CAAA;AACrC,QAAA,uBAAuB,GAAW,aAAa,CAAA;AAC/C,QAAA,sBAAsB,GAAW,YAAY,CAAA"}
1
+ {"version":3,"file":"sftp-const.js","sourceRoot":"","sources":["../server/sftp-const.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAEjC,QAAA,eAAe,GAAQ,YAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACpD,QAAA,cAAc,GAAW,WAAW,CAAA;AACpC,QAAA,eAAe,GAAW,cAAc,CAAA;AACxC,QAAA,cAAc,GAAW,aAAa,CAAA;AACtC,QAAA,gBAAgB,GAAW,YAAY,CAAA;AACvC,QAAA,uBAAuB,GAAW,aAAa,CAAA;AAC/C,QAAA,sBAAsB,GAAW,YAAY,CAAA;AAC7C,QAAA,gBAAgB,GAAW,UAAU,CAAA;AACrC,QAAA,iBAAiB,GAAW,aAAa,CAAA;AACzC,QAAA,gBAAgB,GAAW,YAAY,CAAA;AACvC,QAAA,UAAU,GAAW,WAAW,CAAA"}
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const aws_sdk_1 = __importDefault(require("aws-sdk"));
7
- const v4_1 = __importDefault(require("uuid/v4"));
8
7
  const env_1 = require("@things-factory/env");
9
8
  const sftp_const_1 = require("./sftp-const");
9
+ const crypto = require('crypto');
10
10
  const { PassThrough } = require('stream');
11
11
  const path = require('path');
12
12
  const { fs } = require('memfs');
@@ -51,7 +51,7 @@ if (sftp_const_1.SFTPFILESTORAGE && sftp_const_1.SFTPFILESTORAGE.type == 's3') {
51
51
  };
52
52
  /* upload file */
53
53
  sftp_const_1.SFTPFILESTORAGE.uploadFile = ({ stream, filename, uploadPath }) => {
54
- const id = (0, v4_1.default)();
54
+ const id = crypto.randomUUID();
55
55
  let size = 0;
56
56
  return new Promise((resolve, reject) => stream
57
57
  .pipe((() => {
@@ -1 +1 @@
1
- {"version":3,"file":"sftp-s3.js","sourceRoot":"","sources":["../server/sftp-s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sftp-s3.js","sourceRoot":"","sources":["../server/sftp-s3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateFiles = void 0;
4
+ require("../sftp-s3");
5
+ const sftp_const_1 = require("../sftp-const");
6
+ const fs = require('fs');
7
+ async function generateFiles(params) {
8
+ const fileDirectory = './uploaded-files';
9
+ for (let i = 0; i < params.length; i++) {
10
+ let param = params[i];
11
+ const { uploadPath, content, title } = param;
12
+ if (!fs.existsSync(fileDirectory)) {
13
+ fs.mkdirSync(fileDirectory);
14
+ }
15
+ const filePath = fileDirectory + '/' + title;
16
+ fs.writeFile(filePath, content, function (err) {
17
+ if (err)
18
+ throw err;
19
+ console.log('File is created successfully.');
20
+ });
21
+ if (uploadPath) {
22
+ const stream = fs.createReadStream(filePath);
23
+ await sftp_const_1.SFTPFILESTORAGE.uploadFile({ stream, filename: title, uploadPath });
24
+ }
25
+ }
26
+ fs.rm(fileDirectory, { recursive: true });
27
+ return true;
28
+ }
29
+ exports.generateFiles = generateFiles;
30
+ //# sourceMappingURL=generate-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-files.js","sourceRoot":"","sources":["../../server/util/generate-files.ts"],"names":[],"mappings":";;;AAAA,sBAAmB;AAEnB,8CAA+C;AAE/C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEjB,KAAK,UAAU,aAAa,CAAC,MAAa;IAC/C,MAAM,aAAa,GAAG,kBAAkB,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,KAAK,GAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACjC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;SAC5B;QAED,MAAM,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,KAAK,CAAA;QAE5C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG;YAC3C,IAAI,GAAG;gBAAE,MAAM,GAAG,CAAA;YAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,IAAI,UAAU,EAAE;YACd,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;YAC5C,MAAM,4BAAe,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;SAC1E;KACF;IAED,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEzC,OAAO,IAAI,CAAA;AACb,CAAC;AA1BD,sCA0BC"}
@@ -15,5 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./get-permitted-directories"), exports);
18
- __exportStar(require("./generate-file"), exports);
18
+ __exportStar(require("./generate-files"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,kDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,mDAAgC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/integration-sftp",
3
- "version": "5.0.0-alpha.9",
3
+ "version": "5.0.0-zeta.1",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,13 +24,13 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/auth-base": "^5.0.0-alpha.9",
28
- "@things-factory/biz-base": "^5.0.0-alpha.9",
29
- "@things-factory/env": "^5.0.0-alpha.9",
30
- "@things-factory/integration-fulfillment": "^5.0.0-alpha.9",
31
- "@things-factory/shell": "^5.0.0-alpha.9",
27
+ "@things-factory/auth-base": "^5.0.0-zeta.1",
28
+ "@things-factory/biz-base": "^5.0.0-zeta.1",
29
+ "@things-factory/env": "^5.0.0-zeta.1",
30
+ "@things-factory/integration-fulfillment": "^5.0.0-zeta.1",
31
+ "@things-factory/shell": "^5.0.0-zeta.1",
32
32
  "aws-sdk": "^2.960.0",
33
33
  "xml-js": "^1.6.11"
34
34
  },
35
- "gitHead": "c0f2f0758f80724cae6bbd56bbea43feef0f8a1c"
35
+ "gitHead": "7b69e48d7a0441c5dda884cc895914a6ae3b1c27"
36
36
  }
@@ -0,0 +1,51 @@
1
+ import { BACKUPPATH, SNSUBMITDATAPATH } from '../../../sftp-const'
2
+
3
+ export function createSerialNumber() {
4
+ return {
5
+ method: 'post',
6
+ path: '{folderPath}/{folderType}{snPath}',
7
+ denormalize(req) {
8
+ let { releaseGood, inventoryItems, sftp } = req
9
+ let { folderPath, platform } = sftp
10
+ const folderType: string = sftp.isDevelopment ? `dev` : `prd`
11
+ const snPath: string = SNSUBMITDATAPATH
12
+ const backupPath: string = `${BACKUPPATH}${platform}/${folderType}`
13
+
14
+ let responseFilePattern: any = JSON.parse(sftp.responseFilePattern)
15
+ const { snSuffix, fileExtension, snRunningNumberDigit, snSequence } = responseFilePattern
16
+ let newSeq: number = parseFloat(snSequence) + 1
17
+ let newSequence = newSeq.toString().padStart(snRunningNumberDigit, '0')
18
+ let newResponseFilePattern: string = JSON.stringify({
19
+ ...responseFilePattern,
20
+ snSequence: newSeq.toString()
21
+ })
22
+ sftp = { ...sftp, responseFilePattern: newResponseFilePattern }
23
+
24
+ const today = new Date()
25
+ const year = today.getFullYear().toString()
26
+ const month = (today.getMonth() + 1).toString().padStart(2, '0')
27
+ const day = today.getDate().toString().padStart(2, '0')
28
+ const newDate = day + month + year
29
+
30
+ let title: string = snSuffix ? snSuffix : ``
31
+ title += `_` + newDate
32
+ title += `_` + newSequence
33
+ title += fileExtension ? `.` + fileExtension : ``
34
+
35
+ let content: string = ''
36
+ const orderNo: string = releaseGood.refNo
37
+ for (let i = 0; i < inventoryItems.length; i++) {
38
+ let serialNumber: string = inventoryItems[i].serialNumber
39
+ content += orderNo + '|' + serialNumber + '\n'
40
+ }
41
+
42
+ return {
43
+ resource: { folderPath, folderType, snPath },
44
+ payload: { title, content, sftp, backupPath }
45
+ }
46
+ },
47
+ normalize(res) {
48
+ return res
49
+ }
50
+ }
51
+ }
@@ -1,15 +1,83 @@
1
+ import { BACKUPPATH, COMPLETEDATAPATH } from '../../../sftp-const'
2
+
1
3
  export function createShipment() {
2
4
  return {
3
5
  method: 'post',
4
- path: '{folderPath}/{folderType}/oc/data',
6
+ path: '{folderPath}/{folderType}{shipmentCompletePath}',
5
7
  denormalize(req) {
6
- const { releaseGood, orderInventories, sftp } = req
7
- const { folderPath } = sftp
8
+ let { releaseGood, orderInventories, sftp } = req
9
+ let { folderPath, platform } = sftp
8
10
  const folderType: string = sftp.isDevelopment ? `dev` : `prd`
11
+ const shipmentCompletePath: string = COMPLETEDATAPATH
12
+ const backupPath: string = `${BACKUPPATH}${platform}/${folderType}`
13
+
14
+ let responseFilePattern: any = JSON.parse(sftp.responseFilePattern)
15
+ const { suffix, fileExtension, runningNumberDigit, sequence } = responseFilePattern
16
+ let newSeq: number = parseFloat(sequence) + 1
17
+ let newSequence = newSeq.toString().padStart(runningNumberDigit, '0')
18
+ let newResponseFilePattern: string = JSON.stringify({
19
+ ...responseFilePattern,
20
+ sequence: newSeq.toString()
21
+ })
22
+ sftp = { ...sftp, responseFilePattern: newResponseFilePattern }
23
+
24
+ const warehouseNumber: string = releaseGood.refNo2
25
+ let title: string = suffix ? suffix : ``
26
+ title += newSequence
27
+ title += warehouseNumber ? `_` + warehouseNumber : ``
28
+ title += fileExtension ? `.` + fileExtension : ``
29
+
30
+ let backupTitle: string = releaseGood.refNo + '_' + title
31
+
32
+ const orderNoColumn: number = 15
33
+ const shipmentColumn: number = 27
34
+ const trackingNoColumn: number = 20
35
+
36
+ const refNoLength: number = releaseGood.refNo.length
37
+ let content: string = `1710` + releaseGood.refNo
38
+ let spaceNeeded: number = orderNoColumn - refNoLength
39
+ for (let i = 0; i < spaceNeeded; i++) {
40
+ content += ` `
41
+ }
42
+ content += warehouseNumber
43
+ content += `001000001`
44
+ for (let i = 0; i < shipmentColumn; i++) {
45
+ content += ` `
46
+ }
47
+ content += `000000 `
48
+ for (let i = 0; i < trackingNoColumn; i++) {
49
+ content += ` `
50
+ }
51
+ content += `000000000000 `
52
+ const today = new Date()
53
+ const year = today.getFullYear().toString()
54
+ const month = (today.getMonth() + 1).toString().padStart(2, '0')
55
+ const day = today.getDate().toString().padStart(2, '0')
56
+ const newDate = year + month + day
57
+ content += newDate + '\n'
58
+
59
+ for (let i = 0; i < orderInventories.length; i++) {
60
+ const orderInventory: any = orderInventories[i]
61
+ let sku: string = orderInventory.product.brandSku
62
+ content += `1810` + releaseGood.refNo
63
+ for (let i = 0; i < spaceNeeded; i++) {
64
+ content += ` `
65
+ }
66
+ const idx = (i + 1).toString().padStart(2, '0')
67
+ const productCode: string = sku.substring(0, 4)
68
+ content += idx + `000000` + productCode
69
+ let productCodeSpaceNeeded = 7 - productCode.length
70
+ for (let i = 0; i < productCodeSpaceNeeded; i++) {
71
+ content += ` `
72
+ }
73
+ const orderedQty = orderInventory.releaseQty.toString().padStart(4, '0')
74
+ const pickedQty = orderInventory.pickedQty.toString().padStart(4, '0')
75
+ content += orderedQty + pickedQty + '\n'
76
+ }
9
77
 
10
78
  return {
11
- resource: { folderPath, folderType },
12
- payload: { releaseGood, orderInventories, sftp, folderType }
79
+ resource: { folderPath, folderType, shipmentCompletePath },
80
+ payload: { title, backupTitle, content, sftp, backupPath }
13
81
  }
14
82
  },
15
83
  normalize(res) {
@@ -1,3 +1,4 @@
1
1
  export * from './echo'
2
2
  export * from './get-outbound-order'
3
3
  export * from './create-shipment'
4
+ export * from './create-serial-number'
@@ -4,7 +4,7 @@ import { xml2js } from 'xml-js'
4
4
 
5
5
  import { Sftp } from '../../service'
6
6
  import { SFTPFILESTORAGE } from '../../sftp-const'
7
- import { generateFile } from '../../util/generate-file'
7
+ import { generateFiles } from '../../util/generate-files'
8
8
 
9
9
  const debug = require('debug')('things-factory:integration-sftp:herbalife')
10
10
 
@@ -23,78 +23,30 @@ export class Herbalife {
23
23
  }
24
24
 
25
25
  async post(path: string, data: any = {}) {
26
- let sftp: Sftp = data.sftp
27
- let releaseGood: any = data.releaseGood
28
- let orderInventories: any[] = data.orderInventories
29
-
30
- let responseFilePattern: any = JSON.parse(sftp.responseFilePattern)
31
- const { suffix, warehouseCode, fileExtension, runningNumberDigit, sequence } = responseFilePattern
32
- let newSeq: number = parseFloat(sequence) + 1
33
- let newSequence = newSeq.toString().padStart(runningNumberDigit, '0')
34
- let newResponseFilePattern: string = JSON.stringify({
35
- ...responseFilePattern,
36
- sequence: newSeq.toString()
37
- })
38
- sftp = { ...sftp, responseFilePattern: newResponseFilePattern }
39
-
40
- const warehouseNumber: string = releaseGood.refNo2
41
- let title: string = suffix ? suffix : ``
42
- title += newSequence
43
- title += warehouseNumber ? `_` + warehouseNumber : ``
44
- title += fileExtension ? `.` + fileExtension : ``
45
-
46
- const orderNoColumn: number = 15
47
- const shipmentColumn: number = 27
48
- const trackingNoColumn: number = 20
49
-
50
- const refNoLength: number = releaseGood.refNo.length
51
- let content: string = `1710` + releaseGood.refNo
52
- let spaceNeeded: number = orderNoColumn - refNoLength
53
- for (let i = 0; i < spaceNeeded; i++) {
54
- content += ` `
55
- }
56
- content += warehouseNumber
57
- content += `001000001`
58
- for (let i = 0; i < shipmentColumn; i++) {
59
- content += ` `
60
- }
61
- content += `000000 `
62
- for (let i = 0; i < trackingNoColumn; i++) {
63
- content += ` `
64
- }
65
- content += `000000000000 `
66
- const today = new Date()
67
- const year = today.getFullYear().toString()
68
- const month = (today.getMonth() + 1).toString().padStart(2, '0')
69
- const day = today.getDate().toString().padStart(2, '0')
70
- const newDate = year + month + day
71
- content += newDate + '\n'
72
-
73
- for (let i = 0; i < orderInventories.length; i++) {
74
- const orderInventory: any = orderInventories[i]
75
- let sku: string = orderInventory.product.brandSku
76
- content += `1810` + releaseGood.refNo
77
- for (let i = 0; i < spaceNeeded; i++) {
78
- content += ` `
79
- }
80
- const idx = (i + 1).toString().padStart(2, '0')
81
- const productCode: string = sku.substring(0, 4)
82
- content += idx + `000000` + productCode
83
- let productCodeSpaceNeeded = 7 - productCode.length
84
- for (let i = 0; i < productCodeSpaceNeeded; i++) {
85
- content += ` `
86
- }
87
- const orderedQty = orderInventory.releaseQty.toString().padStart(4, '0')
88
- const pickedQty = orderInventory.pickedQty.toString().padStart(4, '0')
89
- content += orderedQty + pickedQty + '\n'
90
- }
91
-
92
- const params: any = {
26
+ const {
93
27
  title,
94
- uploadPath: path,
95
- content
28
+ backupTitle,
29
+ content,
30
+ sftp,
31
+ backupPath
32
+ }: { title: string; backupTitle: string; content: string; sftp: Sftp; backupPath: string } = data
33
+
34
+ let params: any[] = [
35
+ {
36
+ title,
37
+ uploadPath: path,
38
+ content
39
+ }
40
+ ]
41
+
42
+ if (backupPath) {
43
+ params.push({
44
+ title: backupTitle,
45
+ uploadPath: backupPath,
46
+ content
47
+ })
96
48
  }
97
- await generateFile(params)
49
+ await generateFiles(params)
98
50
 
99
51
  return sftp
100
52
  }
@@ -33,4 +33,7 @@ export class SftpAPI {
33
33
 
34
34
  @api
35
35
  static createShipment(sftp, req): any {}
36
+
37
+ @api
38
+ static createSerialNumber(sftp, req): any {}
36
39
  }
@@ -1,7 +1,7 @@
1
1
  import '../../sftp-s3'
2
2
 
3
3
  import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
4
- import { In } from 'typeorm'
4
+ import { EntityManager, getConnection, In } from 'typeorm'
5
5
 
6
6
  import { Bizplace } from '@things-factory/biz-base'
7
7
  import { FulfillmentAPI, FulFillmentCenter } from '@things-factory/integration-fulfillment'
@@ -113,91 +113,92 @@ export class SftpMutation {
113
113
  return true
114
114
  }
115
115
 
116
- @Directive('@transaction')
117
116
  @Mutation(returns => Boolean, { description: 'To sync all orders from sftp' })
118
117
  async syncSftpOrders(
119
118
  @Arg('customerDomainId', type => String) customerDomainId: string,
120
119
  @Ctx() context: any
121
120
  ): Promise<boolean> {
122
- const { tx } = context.state
123
-
124
- const customerDomain: Domain = await tx.getRepository(Domain).findOne(customerDomainId)
125
-
126
- const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
127
- where: { domain: customerDomain }
128
- })
129
-
130
- const customerBizplaceId: string = customerBizplace.id
131
-
132
- const sftpUsers: Sftp[] = await tx.getRepository(Sftp).find({
133
- where: { domain: customerDomain },
134
- relations: ['fulfillmentCenter']
135
- })
121
+ await getConnection().transaction(async (tx: EntityManager) => {
122
+ const customerDomain: Domain = await tx.getRepository(Domain).findOne(customerDomainId)
123
+
124
+ const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
125
+ where: { domain: customerDomain }
126
+ })
127
+
128
+ const customerBizplaceId: string = customerBizplace.id
129
+
130
+ const sftpUsers: Sftp[] = await tx.getRepository(Sftp).find({
131
+ where: { domain: customerDomain, status: 'ACTIVE' },
132
+ relations: ['fulfillmentCenter']
133
+ })
134
+
135
+ for (var i = 0; i < sftpUsers.length; i++) {
136
+ const sftpUser: Sftp = sftpUsers[i]
137
+
138
+ const fulfilmentCenter: FulFillmentCenter = sftpUser.fulfillmentCenter
139
+ const isDevelopment: boolean = sftpUser.isDevelopment
140
+ const folderPath: string = sftpUser.folderPath
141
+ const folderType: string = isDevelopment ? 'dev' : 'prd'
142
+ let initialDataPath: string = `${sftpUser.folderPath}/${folderType}${SUBMITDATAPATH}/`
143
+ const results: any[] = await getPermittedDirectories({ path: initialDataPath }, context)
144
+ const filesDirectories: any[] = results.filter(result => result.Size > 0)
145
+
146
+ for await (let fileDirectory of filesDirectories) {
147
+ let dataPath: string = `${sftpUser.folderPath}/${folderType}${SUBMITDATAPATH}/`
148
+ let successPath: string = `${sftpUser.folderPath}/${folderType}${SUCCESSDATAPATH}/`
149
+ let failedPath: string = `${sftpUser.folderPath}/${folderType}${FAILEDDATAPATH}/`
150
+ const fileKey: string = fileDirectory.Key
151
+ const lastSlashIdx = fileKey.lastIndexOf('/')
152
+ const fileString: string = fileKey.substring(lastSlashIdx + 1, fileKey.length)
153
+ try {
154
+ const sftp: any = sftpUser
155
+ let result: any = await SftpAPI.getOutboundOrder(sftp, { folderPath, folderType, fileKey: fileString })
156
+ let isAccept: boolean = result.isAccept
157
+
158
+ if (isAccept) {
159
+ delete result.isAccept
160
+ if (result) {
161
+ let { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfilmentCenter, {
162
+ customerBizplaceId,
163
+ refNo: result.refNo
164
+ })
165
+
166
+ if (releaseOrders) {
167
+ result.collectionOrderNo = result.collectionOrderNo + ' - ' + (releaseOrders.length + 1)
168
+ }
136
169
 
137
- for (var i = 0; i < sftpUsers.length; i++) {
138
- const sftpUser: Sftp = sftpUsers[i]
139
-
140
- const fulfilmentCenter: FulFillmentCenter = sftpUser.fulfillmentCenter
141
- const isDevelopment: boolean = sftpUser.isDevelopment
142
- const folderPath: string = sftpUser.folderPath
143
- const folderType: string = isDevelopment ? 'dev' : 'prd'
144
- let initialDataPath: string = `${sftpUser.folderPath}/${folderType}${SUBMITDATAPATH}/`
145
- const results: any[] = await getPermittedDirectories({ path: initialDataPath }, context)
146
- const filesDirectories: any[] = results.filter(result => result.Size > 0)
147
-
148
- for await (let fileDirectory of filesDirectories) {
149
- let dataPath: string = `${sftpUser.folderPath}/${folderType}${SUBMITDATAPATH}/`
150
- let successPath: string = `${sftpUser.folderPath}/${folderType}${SUCCESSDATAPATH}/`
151
- let failedPath: string = `${sftpUser.folderPath}/${folderType}${FAILEDDATAPATH}/`
152
- const fileKey: string = fileDirectory.Key
153
- const lastSlashIdx = fileKey.lastIndexOf('/')
154
- const fileString: string = fileKey.substring(lastSlashIdx + 1, fileKey.length)
155
- try {
156
- const sftp: any = sftpUser
157
- let result: any = await SftpAPI.getOutboundOrder(sftp, { folderPath, folderType, fileKey: fileString })
158
- let isAccept: boolean = result.isAccept
159
-
160
- if (isAccept) {
161
- delete result.isAccept
162
- if (result) {
163
- let { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfilmentCenter, {
164
- customerBizplaceId,
165
- refNo: result.refNo
166
- })
167
-
168
- if (releaseOrders) {
169
- result.collectionOrderNo = result.collectionOrderNo + ' - ' + (releaseOrders.length + 1)
170
- }
170
+ result.requiredDraft = false
171
171
 
172
- const releaseOrder: any = await FulfillmentAPI.createOutboundOrder(fulfilmentCenter, {
173
- customerBizplaceId,
174
- releaseOrder: result
175
- })
172
+ const releaseOrder: any = await FulfillmentAPI.createOutboundOrder(fulfilmentCenter, {
173
+ customerBizplaceId,
174
+ releaseOrder: result
175
+ })
176
176
 
177
- if (releaseOrder) {
178
- let movePaths = {
179
- source: (dataPath += fileString),
180
- destination: (successPath += fileString)
177
+ if (releaseOrder) {
178
+ let movePaths = {
179
+ source: (dataPath += fileString),
180
+ destination: (successPath += fileString)
181
+ }
182
+ await SFTPFILESTORAGE.moveFile(movePaths)
181
183
  }
182
- await SFTPFILESTORAGE.moveFile(movePaths)
183
184
  }
185
+ } else {
186
+ let movePaths = {
187
+ source: (dataPath += fileString),
188
+ destination: (failedPath += fileString)
189
+ }
190
+ await SFTPFILESTORAGE.moveFile(movePaths)
184
191
  }
185
- } else {
192
+ } catch (e) {
186
193
  let movePaths = {
187
194
  source: (dataPath += fileString),
188
195
  destination: (failedPath += fileString)
189
196
  }
190
197
  await SFTPFILESTORAGE.moveFile(movePaths)
191
198
  }
192
- } catch (e) {
193
- let movePaths = {
194
- source: (dataPath += fileString),
195
- destination: (failedPath += fileString)
196
- }
197
- await SFTPFILESTORAGE.moveFile(movePaths)
198
199
  }
199
200
  }
200
- }
201
+ })
201
202
 
202
203
  return true
203
204
  }
@@ -22,7 +22,7 @@ export class SftpQuery {
22
22
  async sftps(@Args() params: ListParam, @Ctx() context: any): Promise<SftpList> {
23
23
  const { domain } = context.state
24
24
 
25
- const convertedParams = convertListParams(params, domain.id)
25
+ const convertedParams = convertListParams(params, { domain })
26
26
  const [items, total] = await getRepository(Sftp).findAndCount(convertedParams)
27
27
 
28
28
  return { items, total }
@@ -1,6 +1,6 @@
1
1
  import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
2
2
 
3
- import { Sftp } from './sftp'
3
+ import { Sftp, SftpStatus } from './sftp'
4
4
 
5
5
  @InputType()
6
6
  export class NewSftp {
@@ -10,6 +10,9 @@ export class NewSftp {
10
10
  @Field({ nullable: true })
11
11
  description?: string
12
12
 
13
+ @Field(type => SftpStatus, { nullable: true })
14
+ status?: SftpStatus
15
+
13
16
  @Field({ nullable: true })
14
17
  username?: string
15
18
 
@@ -40,6 +43,9 @@ export class SftpPatch {
40
43
  @Field({ nullable: true })
41
44
  description?: string
42
45
 
46
+ @Field(type => SftpStatus, { nullable: true })
47
+ status?: SftpStatus
48
+
43
49
  @Field({ nullable: true })
44
50
  username?: string
45
51