@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.
- package/dist-server/controllers/herbalife/apis/create-serial-number.js +47 -0
- package/dist-server/controllers/herbalife/apis/create-serial-number.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/create-shipment.js +63 -5
- package/dist-server/controllers/herbalife/apis/create-shipment.js.map +1 -1
- package/dist-server/controllers/herbalife/apis/index.js +1 -0
- package/dist-server/controllers/herbalife/apis/index.js.map +1 -1
- package/dist-server/controllers/herbalife/herbalife.js +15 -62
- package/dist-server/controllers/herbalife/herbalife.js.map +1 -1
- package/dist-server/controllers/sftp-api/index.js +7 -0
- package/dist-server/controllers/sftp-api/index.js.map +1 -1
- package/dist-server/service/sftp/sftp-mutation.js +70 -69
- package/dist-server/service/sftp/sftp-mutation.js.map +1 -1
- package/dist-server/service/sftp/sftp-query.js +1 -1
- package/dist-server/service/sftp/sftp-query.js.map +1 -1
- package/dist-server/service/sftp/sftp-type.js +8 -0
- package/dist-server/service/sftp/sftp-type.js.map +1 -1
- package/dist-server/service/sftp/sftp.js +23 -1
- package/dist-server/service/sftp/sftp.js.map +1 -1
- package/dist-server/sftp-const.js +6 -2
- package/dist-server/sftp-const.js.map +1 -1
- package/dist-server/sftp-s3.js +2 -2
- package/dist-server/sftp-s3.js.map +1 -1
- package/dist-server/util/generate-files.js +30 -0
- package/dist-server/util/generate-files.js.map +1 -0
- package/dist-server/util/index.js +1 -1
- package/dist-server/util/index.js.map +1 -1
- package/package.json +7 -7
- package/server/controllers/herbalife/apis/create-serial-number.ts +51 -0
- package/server/controllers/herbalife/apis/create-shipment.ts +73 -5
- package/server/controllers/herbalife/apis/index.ts +1 -0
- package/server/controllers/herbalife/herbalife.ts +23 -71
- package/server/controllers/sftp-api/index.ts +3 -0
- package/server/service/sftp/sftp-mutation.ts +68 -67
- package/server/service/sftp/sftp-query.ts +1 -1
- package/server/service/sftp/sftp-type.ts +7 -1
- package/server/service/sftp/sftp.ts +22 -1
- package/server/sftp-const.ts +5 -1
- package/server/sftp-s3.ts +3 -2
- package/server/util/generate-files.ts +33 -0
- package/server/util/index.ts +1 -1
- package/dist-server/util/generate-file.js +0 -27
- package/dist-server/util/generate-file.js.map +0 -1
- 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":";;;;;;;;;;;;;AAAA,+
|
|
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/
|
|
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,
|
|
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"}
|
package/dist-server/sftp-s3.js
CHANGED
|
@@ -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 =
|
|
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":";;;;;AAAA,sDAAyB;
|
|
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-
|
|
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,
|
|
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-
|
|
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-
|
|
28
|
-
"@things-factory/biz-base": "^5.0.0-
|
|
29
|
-
"@things-factory/env": "^5.0.0-
|
|
30
|
-
"@things-factory/integration-fulfillment": "^5.0.0-
|
|
31
|
-
"@things-factory/shell": "^5.0.0-
|
|
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": "
|
|
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}
|
|
6
|
+
path: '{folderPath}/{folderType}{shipmentCompletePath}',
|
|
5
7
|
denormalize(req) {
|
|
6
|
-
|
|
7
|
-
|
|
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: {
|
|
79
|
+
resource: { folderPath, folderType, shipmentCompletePath },
|
|
80
|
+
payload: { title, backupTitle, content, sftp, backupPath }
|
|
13
81
|
}
|
|
14
82
|
},
|
|
15
83
|
normalize(res) {
|
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
49
|
+
await generateFiles(params)
|
|
98
50
|
|
|
99
51
|
return sftp
|
|
100
52
|
}
|
|
@@ -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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
172
|
+
const releaseOrder: any = await FulfillmentAPI.createOutboundOrder(fulfilmentCenter, {
|
|
173
|
+
customerBizplaceId,
|
|
174
|
+
releaseOrder: result
|
|
175
|
+
})
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
}
|
|
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
|
|
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
|
|