@things-factory/integration-sftp 5.0.0-alpha.5 → 5.0.0-alpha.52
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 +78 -60
- 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 -68
- 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":";;;;;;;;;;;;;AAAA,+CAAsE;AACtE,qCASgB;AAEhB,yDAAgD;AAChD,qFAA2E;AAC3E,iDAA8C;AAE9C,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC3B,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB;AAED,IAAA,+BAAgB,EAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,6BAA6B;CAC3C,CAAC,CAAA;AAKF,IAAa,IAAI,GAAjB,MAAa,IAAI;CA4GhB,CAAA;AAzGC;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;gCACC;AAInB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACjB,cAAM,oBAAN,cAAM;oCAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;;sCACvB;AAIjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;kCACI;AAMZ;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACN;AAIpB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCACP;AAMnB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACT;AAMjB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACR;AAMlB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACP;AAMnB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACP;AAMnB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACH;AAMvB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACT;AAGjB;IADC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,2CAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACtC,2CAAiB,oBAAjB,2CAAiB;+CAAA;AAMpC;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACN;AAMpB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACC;AAM3B;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACD;AAIzB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACd,IAAI;uCAAA;AAIhB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACd,IAAI;uCAAA;AAMhB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAChB,gBAAI,oBAAJ,gBAAI;qCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACvB;AAMlB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAChB,gBAAI,oBAAJ,gBAAI;qCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACvB;AA3GP,IAAI;IAHhB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,WAAW,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9E,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;GAClC,IAAI,CA4GhB;AA5GY,oBAAI"}
|
|
@@ -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-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.52",
|
|
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.
|
|
28
|
-
"@things-factory/biz-base": "^5.0.0-alpha.
|
|
29
|
-
"@things-factory/env": "^5.0.0-alpha.
|
|
30
|
-
"@things-factory/integration-fulfillment": "^5.0.0-alpha.
|
|
31
|
-
"@things-factory/shell": "^5.0.0-alpha.
|
|
27
|
+
"@things-factory/auth-base": "^5.0.0-alpha.52",
|
|
28
|
+
"@things-factory/biz-base": "^5.0.0-alpha.52",
|
|
29
|
+
"@things-factory/env": "^5.0.0-alpha.52",
|
|
30
|
+
"@things-factory/integration-fulfillment": "^5.0.0-alpha.52",
|
|
31
|
+
"@things-factory/shell": "^5.0.0-alpha.52",
|
|
32
32
|
"aws-sdk": "^2.960.0",
|
|
33
33
|
"xml-js": "^1.6.11"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "dd9c8f2e256e256e42bd9bd26db5eaa955f85620"
|
|
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,92 +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 (let j = 0; j < filesDirectories.length; j++) {
|
|
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 fileDirectory: any = filesDirectories[j]
|
|
153
|
-
const fileKey: string = fileDirectory.Key
|
|
154
|
-
const lastSlashIdx = fileKey.lastIndexOf('/')
|
|
155
|
-
const fileString: string = fileKey.substring(lastSlashIdx + 1, fileKey.length)
|
|
156
|
-
try {
|
|
157
|
-
const sftp: any = sftpUser
|
|
158
|
-
let result: any = await SftpAPI.getOutboundOrder(sftp, { folderPath, folderType, fileKey: fileString })
|
|
159
|
-
let isAccept: boolean = result.isAccept
|
|
160
|
-
|
|
161
|
-
if (isAccept) {
|
|
162
|
-
delete result.isAccept
|
|
163
|
-
if (result) {
|
|
164
|
-
let { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfilmentCenter, {
|
|
165
|
-
customerBizplaceId,
|
|
166
|
-
refNo: result.refNo
|
|
167
|
-
})
|
|
168
|
-
|
|
169
|
-
if (releaseOrders) {
|
|
170
|
-
result.collectionOrderNo = result.collectionOrderNo + ' - ' + (releaseOrders.length + 1)
|
|
171
|
-
}
|
|
170
|
+
result.requiredDraft = false
|
|
172
171
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
172
|
+
const releaseOrder: any = await FulfillmentAPI.createOutboundOrder(fulfilmentCenter, {
|
|
173
|
+
customerBizplaceId,
|
|
174
|
+
releaseOrder: result
|
|
175
|
+
})
|
|
177
176
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
177
|
+
if (releaseOrder) {
|
|
178
|
+
let movePaths = {
|
|
179
|
+
source: (dataPath += fileString),
|
|
180
|
+
destination: (successPath += fileString)
|
|
181
|
+
}
|
|
182
|
+
await SFTPFILESTORAGE.moveFile(movePaths)
|
|
182
183
|
}
|
|
183
|
-
await SFTPFILESTORAGE.moveFile(movePaths)
|
|
184
184
|
}
|
|
185
|
+
} else {
|
|
186
|
+
let movePaths = {
|
|
187
|
+
source: (dataPath += fileString),
|
|
188
|
+
destination: (failedPath += fileString)
|
|
189
|
+
}
|
|
190
|
+
await SFTPFILESTORAGE.moveFile(movePaths)
|
|
185
191
|
}
|
|
186
|
-
}
|
|
192
|
+
} catch (e) {
|
|
187
193
|
let movePaths = {
|
|
188
194
|
source: (dataPath += fileString),
|
|
189
195
|
destination: (failedPath += fileString)
|
|
190
196
|
}
|
|
191
197
|
await SFTPFILESTORAGE.moveFile(movePaths)
|
|
192
198
|
}
|
|
193
|
-
} catch (e) {
|
|
194
|
-
let movePaths = {
|
|
195
|
-
source: (dataPath += fileString),
|
|
196
|
-
destination: (failedPath += fileString)
|
|
197
|
-
}
|
|
198
|
-
await SFTPFILESTORAGE.moveFile(movePaths)
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
-
}
|
|
201
|
+
})
|
|
202
202
|
|
|
203
203
|
return true
|
|
204
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
|
|