@things-factory/integration-sftp 9.0.0-beta.27 → 9.0.0-beta.29
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.d.ts +18 -0
- package/dist-server/controllers/herbalife/apis/create-serial-number.js +46 -0
- package/dist-server/controllers/herbalife/apis/create-serial-number.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/create-shipment.d.ts +19 -0
- package/dist-server/controllers/herbalife/apis/create-shipment.js +84 -0
- package/dist-server/controllers/herbalife/apis/create-shipment.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/echo.d.ts +12 -0
- package/dist-server/controllers/herbalife/apis/echo.js +18 -0
- package/dist-server/controllers/herbalife/apis/echo.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/get-outbound-order.d.ts +14 -0
- package/dist-server/controllers/herbalife/apis/get-outbound-order.js +107 -0
- package/dist-server/controllers/herbalife/apis/get-outbound-order.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/index.d.ts +4 -0
- package/dist-server/controllers/herbalife/apis/index.js +8 -0
- package/dist-server/controllers/herbalife/apis/index.js.map +1 -0
- package/dist-server/controllers/herbalife/herbalife.d.ts +8 -0
- package/dist-server/controllers/herbalife/herbalife.js +40 -0
- package/dist-server/controllers/herbalife/herbalife.js.map +1 -0
- package/dist-server/controllers/herbalife/index.d.ts +1 -0
- package/dist-server/controllers/herbalife/index.js +9 -0
- package/dist-server/controllers/herbalife/index.js.map +1 -0
- package/dist-server/controllers/herbalife/platform-action.d.ts +5 -0
- package/dist-server/controllers/herbalife/platform-action.js +30 -0
- package/dist-server/controllers/herbalife/platform-action.js.map +1 -0
- package/dist-server/controllers/index.d.ts +2 -0
- package/dist-server/controllers/index.js +6 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/controllers/sftp-api/decorators.d.ts +1 -0
- package/dist-server/controllers/sftp-api/decorators.js +28 -0
- package/dist-server/controllers/sftp-api/decorators.js.map +1 -0
- package/dist-server/controllers/sftp-api/index.d.ts +11 -0
- package/dist-server/controllers/sftp-api/index.js +56 -0
- package/dist-server/controllers/sftp-api/index.js.map +1 -0
- package/dist-server/controllers/sftp-api/types.d.ts +0 -0
- package/dist-server/controllers/sftp-api/types.js +1 -0
- package/dist-server/controllers/sftp-api/types.js.map +1 -0
- package/dist-server/index.d.ts +6 -0
- package/dist-server/index.js +10 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/middlewares/index.d.ts +1 -0
- package/dist-server/middlewares/index.js +7 -0
- package/dist-server/middlewares/index.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +25 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/index.d.ts +5 -0
- package/dist-server/service/index.js +19 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/sftp/index.d.ts +5 -0
- package/dist-server/service/sftp/index.js +9 -0
- package/dist-server/service/sftp/index.js.map +1 -0
- package/dist-server/service/sftp/sftp-mutation.d.ts +15 -0
- package/dist-server/service/sftp/sftp-mutation.js +250 -0
- package/dist-server/service/sftp/sftp-mutation.js.map +1 -0
- package/dist-server/service/sftp/sftp-query.d.ts +11 -0
- package/dist-server/service/sftp/sftp-query.js +74 -0
- package/dist-server/service/sftp/sftp-query.js.map +1 -0
- package/dist-server/service/sftp/sftp-type.d.ts +29 -0
- package/dist-server/service/sftp/sftp-type.js +113 -0
- package/dist-server/service/sftp/sftp-type.js.map +1 -0
- package/dist-server/service/sftp/sftp.d.ts +33 -0
- package/dist-server/service/sftp/sftp.js +163 -0
- package/dist-server/service/sftp/sftp.js.map +1 -0
- package/dist-server/sftp-const.d.ts +11 -0
- package/dist-server/sftp-const.js +16 -0
- package/dist-server/sftp-const.js.map +1 -0
- package/dist-server/sftp-s3.d.ts +1 -0
- package/dist-server/sftp-s3.js +67 -0
- package/dist-server/sftp-s3.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/dist-server/util/generate-files.d.ts +2 -0
- package/dist-server/util/generate-files.js +29 -0
- package/dist-server/util/generate-files.js.map +1 -0
- package/dist-server/util/get-permitted-directories.d.ts +3 -0
- package/dist-server/util/get-permitted-directories.js +15 -0
- package/dist-server/util/get-permitted-directories.js.map +1 -0
- package/dist-server/util/index.d.ts +2 -0
- package/dist-server/util/index.js +6 -0
- package/dist-server/util/index.js.map +1 -0
- package/package.json +7 -7
@@ -0,0 +1,18 @@
|
|
1
|
+
export declare function createSerialNumber(): {
|
2
|
+
method: string;
|
3
|
+
path: string;
|
4
|
+
denormalize(req: any): {
|
5
|
+
resource: {
|
6
|
+
folderPath: any;
|
7
|
+
folderType: string;
|
8
|
+
snPath: string;
|
9
|
+
};
|
10
|
+
payload: {
|
11
|
+
title: string;
|
12
|
+
content: string;
|
13
|
+
sftp: any;
|
14
|
+
backupPath: string;
|
15
|
+
};
|
16
|
+
};
|
17
|
+
normalize(res: any): any;
|
18
|
+
};
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createSerialNumber = createSerialNumber;
|
4
|
+
const sftp_const_1 = require("../../../sftp-const");
|
5
|
+
function createSerialNumber() {
|
6
|
+
return {
|
7
|
+
method: 'post',
|
8
|
+
path: '{folderPath}/{folderType}{snPath}',
|
9
|
+
denormalize(req) {
|
10
|
+
let { releaseGood, inventoryItems, sftp } = req;
|
11
|
+
let { folderPath, platform } = sftp;
|
12
|
+
const folderType = sftp.isDevelopment ? `dev` : `prd`;
|
13
|
+
const snPath = sftp_const_1.SNSUBMITDATAPATH;
|
14
|
+
const backupPath = `${sftp_const_1.BACKUPPATH}${platform}/${folderType}`;
|
15
|
+
let responseFilePattern = JSON.parse(sftp.responseFilePattern);
|
16
|
+
const { snSuffix, fileExtension, snRunningNumberDigit, snSequence } = responseFilePattern;
|
17
|
+
let newSeq = parseFloat(snSequence) + 1;
|
18
|
+
let newSequence = newSeq.toString().padStart(snRunningNumberDigit, '0');
|
19
|
+
let newResponseFilePattern = JSON.stringify(Object.assign(Object.assign({}, responseFilePattern), { snSequence: newSeq.toString() }));
|
20
|
+
sftp = Object.assign(Object.assign({}, sftp), { responseFilePattern: newResponseFilePattern });
|
21
|
+
const today = new Date();
|
22
|
+
const year = today.getFullYear().toString();
|
23
|
+
const month = (today.getMonth() + 1).toString().padStart(2, '0');
|
24
|
+
const day = today.getDate().toString().padStart(2, '0');
|
25
|
+
const newDate = day + month + year;
|
26
|
+
let title = snSuffix ? snSuffix : ``;
|
27
|
+
title += `_` + newDate;
|
28
|
+
title += `_` + newSequence;
|
29
|
+
title += fileExtension ? `.` + fileExtension : ``;
|
30
|
+
let content = '';
|
31
|
+
const orderNo = releaseGood.refNo;
|
32
|
+
for (let i = 0; i < inventoryItems.length; i++) {
|
33
|
+
let serialNumber = inventoryItems[i].serialNumber;
|
34
|
+
content += orderNo + '|' + serialNumber + '\n';
|
35
|
+
}
|
36
|
+
return {
|
37
|
+
resource: { folderPath, folderType, snPath },
|
38
|
+
payload: { title, content, sftp, backupPath }
|
39
|
+
};
|
40
|
+
},
|
41
|
+
normalize(res) {
|
42
|
+
return res;
|
43
|
+
}
|
44
|
+
};
|
45
|
+
}
|
46
|
+
//# sourceMappingURL=create-serial-number.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create-serial-number.js","sourceRoot":"","sources":["../../../../server/controllers/herbalife/apis/create-serial-number.ts"],"names":[],"mappings":";;AAEA,gDAgDC;AAlDD,oDAAkE;AAElE,SAAgB,kBAAkB;IAChC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,mCAAmC;QACzC,WAAW,CAAC,GAAG;YACb,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;YAC/C,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;YACnC,MAAM,UAAU,GAAW,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;YAC7D,MAAM,MAAM,GAAW,6BAAgB,CAAA;YACvC,MAAM,UAAU,GAAW,GAAG,uBAAU,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAA;YAEnE,IAAI,mBAAmB,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YACnE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;YACzF,IAAI,MAAM,GAAW,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;YACvE,IAAI,sBAAsB,GAAW,IAAI,CAAC,SAAS,iCAC9C,mBAAmB,KACtB,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,IAC7B,CAAA;YACF,IAAI,mCAAQ,IAAI,KAAE,mBAAmB,EAAE,sBAAsB,GAAE,CAAA;YAE/D,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC3C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAChE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACvD,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,CAAA;YAElC,IAAI,KAAK,GAAW,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5C,KAAK,IAAI,GAAG,GAAG,OAAO,CAAA;YACtB,KAAK,IAAI,GAAG,GAAG,WAAW,CAAA;YAC1B,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;YAEjD,IAAI,OAAO,GAAW,EAAE,CAAA;YACxB,MAAM,OAAO,GAAW,WAAW,CAAC,KAAK,CAAA;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,IAAI,YAAY,GAAW,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;gBACzD,OAAO,IAAI,OAAO,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,CAAA;YAChD,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE;gBAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;aAC9C,CAAA;QACH,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["import { BACKUPPATH, SNSUBMITDATAPATH } from '../../../sftp-const'\n\nexport function createSerialNumber() {\n return {\n method: 'post',\n path: '{folderPath}/{folderType}{snPath}',\n denormalize(req) {\n let { releaseGood, inventoryItems, sftp } = req\n let { folderPath, platform } = sftp\n const folderType: string = sftp.isDevelopment ? `dev` : `prd`\n const snPath: string = SNSUBMITDATAPATH\n const backupPath: string = `${BACKUPPATH}${platform}/${folderType}`\n\n let responseFilePattern: any = JSON.parse(sftp.responseFilePattern)\n const { snSuffix, fileExtension, snRunningNumberDigit, snSequence } = responseFilePattern\n let newSeq: number = parseFloat(snSequence) + 1\n let newSequence = newSeq.toString().padStart(snRunningNumberDigit, '0')\n let newResponseFilePattern: string = JSON.stringify({\n ...responseFilePattern,\n snSequence: newSeq.toString()\n })\n sftp = { ...sftp, responseFilePattern: newResponseFilePattern }\n\n const today = new Date()\n const year = today.getFullYear().toString()\n const month = (today.getMonth() + 1).toString().padStart(2, '0')\n const day = today.getDate().toString().padStart(2, '0')\n const newDate = day + month + year\n\n let title: string = snSuffix ? snSuffix : ``\n title += `_` + newDate\n title += `_` + newSequence\n title += fileExtension ? `.` + fileExtension : ``\n\n let content: string = ''\n const orderNo: string = releaseGood.refNo\n for (let i = 0; i < inventoryItems.length; i++) {\n let serialNumber: string = inventoryItems[i].serialNumber\n content += orderNo + '|' + serialNumber + '\\n'\n }\n\n return {\n resource: { folderPath, folderType, snPath },\n payload: { title, content, sftp, backupPath }\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
export declare function createShipment(): {
|
2
|
+
method: string;
|
3
|
+
path: string;
|
4
|
+
denormalize(req: any): {
|
5
|
+
resource: {
|
6
|
+
folderPath: any;
|
7
|
+
folderType: string;
|
8
|
+
shipmentCompletePath: string;
|
9
|
+
};
|
10
|
+
payload: {
|
11
|
+
title: string;
|
12
|
+
backupTitle: string;
|
13
|
+
content: string;
|
14
|
+
sftp: any;
|
15
|
+
backupPath: string;
|
16
|
+
};
|
17
|
+
};
|
18
|
+
normalize(res: any): any;
|
19
|
+
};
|
@@ -0,0 +1,84 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createShipment = createShipment;
|
4
|
+
const sftp_const_1 = require("../../../sftp-const");
|
5
|
+
function createShipment() {
|
6
|
+
return {
|
7
|
+
method: 'post',
|
8
|
+
path: '{folderPath}/{folderType}{shipmentCompletePath}',
|
9
|
+
denormalize(req) {
|
10
|
+
let { releaseGoods, sftp } = req;
|
11
|
+
let { folderPath, platform } = sftp;
|
12
|
+
const folderType = sftp.isDevelopment ? `dev` : `prd`;
|
13
|
+
const shipmentCompletePath = sftp_const_1.COMPLETEDATAPATH;
|
14
|
+
const backupPath = `${sftp_const_1.BACKUPPATH}${platform}/${folderType}`;
|
15
|
+
let responseFilePattern = JSON.parse(sftp.responseFilePattern);
|
16
|
+
const { suffix, fileExtension, runningNumberDigit, sequence } = responseFilePattern;
|
17
|
+
let newSeq = parseFloat(sequence) + 1;
|
18
|
+
let newSequence = newSeq.toString().padStart(runningNumberDigit, '0');
|
19
|
+
let newResponseFilePattern = JSON.stringify(Object.assign(Object.assign({}, responseFilePattern), { sequence: newSeq.toString() }));
|
20
|
+
sftp = Object.assign(Object.assign({}, sftp), { responseFilePattern: newResponseFilePattern });
|
21
|
+
const warehouseNumber = releaseGoods[0].refNo2;
|
22
|
+
let title = suffix ? suffix : ``;
|
23
|
+
title += newSequence;
|
24
|
+
title += warehouseNumber ? `_` + warehouseNumber : ``;
|
25
|
+
title += fileExtension ? `.` + fileExtension : ``;
|
26
|
+
let backupTitle = releaseGoods[0].refNo + '_' + title;
|
27
|
+
const orderNoColumn = 15;
|
28
|
+
const shipmentColumn = 27;
|
29
|
+
const trackingNoColumn = 20;
|
30
|
+
let bulkContent = '';
|
31
|
+
for (let releaseGood of releaseGoods) {
|
32
|
+
const refNoLength = releaseGood.refNo.length;
|
33
|
+
let content = `1710` + releaseGood.refNo;
|
34
|
+
let spaceNeeded = orderNoColumn - refNoLength;
|
35
|
+
for (let i = 0; i < spaceNeeded; i++) {
|
36
|
+
content += ` `;
|
37
|
+
}
|
38
|
+
content += warehouseNumber;
|
39
|
+
content += `001000001`;
|
40
|
+
for (let i = 0; i < shipmentColumn; i++) {
|
41
|
+
content += ` `;
|
42
|
+
}
|
43
|
+
content += `000000 `;
|
44
|
+
for (let i = 0; i < trackingNoColumn; i++) {
|
45
|
+
content += ` `;
|
46
|
+
}
|
47
|
+
content += `000000000000 `;
|
48
|
+
const today = new Date();
|
49
|
+
const year = today.getFullYear().toString();
|
50
|
+
const month = (today.getMonth() + 1).toString().padStart(2, '0');
|
51
|
+
const day = today.getDate().toString().padStart(2, '0');
|
52
|
+
const newDate = year + month + day;
|
53
|
+
content += newDate + '\n';
|
54
|
+
for (let i = 0; i < releaseGood.orderInventories.length; i++) {
|
55
|
+
const orderInventory = releaseGood.orderInventories[i];
|
56
|
+
let sku = orderInventory.product.brandSku;
|
57
|
+
content += `1810` + releaseGood.refNo;
|
58
|
+
for (let i = 0; i < spaceNeeded; i++) {
|
59
|
+
content += ` `;
|
60
|
+
}
|
61
|
+
const idx = (i + 1).toString().padStart(2, '0');
|
62
|
+
const productCode = sku.substring(0, 4);
|
63
|
+
content += idx + `000000` + productCode;
|
64
|
+
let productCodeSpaceNeeded = 7 - productCode.length;
|
65
|
+
for (let i = 0; i < productCodeSpaceNeeded; i++) {
|
66
|
+
content += ` `;
|
67
|
+
}
|
68
|
+
const orderedQty = orderInventory.releaseQty.toString().padStart(4, '0');
|
69
|
+
const pickedQty = orderInventory.pickedQty.toString().padStart(4, '0');
|
70
|
+
content += orderedQty + pickedQty + '\n';
|
71
|
+
}
|
72
|
+
bulkContent += content;
|
73
|
+
}
|
74
|
+
return {
|
75
|
+
resource: { folderPath, folderType, shipmentCompletePath },
|
76
|
+
payload: { title, backupTitle, content: bulkContent, sftp, backupPath }
|
77
|
+
};
|
78
|
+
},
|
79
|
+
normalize(res) {
|
80
|
+
return res;
|
81
|
+
}
|
82
|
+
};
|
83
|
+
}
|
84
|
+
//# sourceMappingURL=create-shipment.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create-shipment.js","sourceRoot":"","sources":["../../../../server/controllers/herbalife/apis/create-shipment.ts"],"names":[],"mappings":"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","sourcesContent":["import { BACKUPPATH, COMPLETEDATAPATH } from '../../../sftp-const'\n\nexport function createShipment() {\n return {\n method: 'post',\n path: '{folderPath}/{folderType}{shipmentCompletePath}',\n denormalize(req) {\n let { releaseGoods, sftp } = req\n let { folderPath, platform } = sftp\n const folderType: string = sftp.isDevelopment ? `dev` : `prd`\n const shipmentCompletePath: string = COMPLETEDATAPATH\n const backupPath: string = `${BACKUPPATH}${platform}/${folderType}`\n\n let responseFilePattern: any = JSON.parse(sftp.responseFilePattern)\n const { suffix, fileExtension, runningNumberDigit, sequence } = responseFilePattern\n let newSeq: number = parseFloat(sequence) + 1\n let newSequence = newSeq.toString().padStart(runningNumberDigit, '0')\n let newResponseFilePattern: string = JSON.stringify({\n ...responseFilePattern,\n sequence: newSeq.toString()\n })\n sftp = { ...sftp, responseFilePattern: newResponseFilePattern }\n\n const warehouseNumber: string = releaseGoods[0].refNo2\n let title: string = suffix ? suffix : ``\n title += newSequence\n title += warehouseNumber ? `_` + warehouseNumber : ``\n title += fileExtension ? `.` + fileExtension : ``\n\n let backupTitle: string = releaseGoods[0].refNo + '_' + title\n const orderNoColumn: number = 15\n const shipmentColumn: number = 27\n const trackingNoColumn: number = 20\n let bulkContent = ''\n for (let releaseGood of releaseGoods) {\n const refNoLength: number = releaseGood.refNo.length\n let content: string = `1710` + releaseGood.refNo\n let spaceNeeded: number = orderNoColumn - refNoLength\n for (let i = 0; i < spaceNeeded; i++) {\n content += ` `\n }\n content += warehouseNumber\n content += `001000001`\n for (let i = 0; i < shipmentColumn; i++) {\n content += ` `\n }\n content += `000000 `\n for (let i = 0; i < trackingNoColumn; i++) {\n content += ` `\n }\n content += `000000000000 `\n const today = new Date()\n const year = today.getFullYear().toString()\n const month = (today.getMonth() + 1).toString().padStart(2, '0')\n const day = today.getDate().toString().padStart(2, '0')\n const newDate = year + month + day\n content += newDate + '\\n'\n\n for (let i = 0; i < releaseGood.orderInventories.length; i++) {\n const orderInventory: any = releaseGood.orderInventories[i]\n let sku: string = orderInventory.product.brandSku\n content += `1810` + releaseGood.refNo\n for (let i = 0; i < spaceNeeded; i++) {\n content += ` `\n }\n const idx = (i + 1).toString().padStart(2, '0')\n const productCode: string = sku.substring(0, 4)\n content += idx + `000000` + productCode\n let productCodeSpaceNeeded = 7 - productCode.length\n for (let i = 0; i < productCodeSpaceNeeded; i++) {\n content += ` `\n }\n const orderedQty = orderInventory.releaseQty.toString().padStart(4, '0')\n const pickedQty = orderInventory.pickedQty.toString().padStart(4, '0')\n content += orderedQty + pickedQty + '\\n'\n }\n bulkContent += content\n }\n return {\n resource: { folderPath, folderType, shipmentCompletePath },\n payload: { title, backupTitle, content: bulkContent, sftp, backupPath }\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
export declare function echo(): {
|
2
|
+
path: string;
|
3
|
+
denormalize(req: any): any;
|
4
|
+
normalize(res: any): any;
|
5
|
+
action({ store, method, path, request, platformAction }: {
|
6
|
+
store: any;
|
7
|
+
method: any;
|
8
|
+
path: any;
|
9
|
+
request: any;
|
10
|
+
platformAction: any;
|
11
|
+
}): any;
|
12
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.echo = echo;
|
4
|
+
function echo() {
|
5
|
+
return {
|
6
|
+
path: '/echo',
|
7
|
+
denormalize(req) {
|
8
|
+
return Object.assign({}, req);
|
9
|
+
},
|
10
|
+
normalize(res) {
|
11
|
+
return Object.assign({}, res);
|
12
|
+
},
|
13
|
+
action({ store, method, path, request, platformAction }) {
|
14
|
+
return Object.assign({}, request);
|
15
|
+
}
|
16
|
+
};
|
17
|
+
}
|
18
|
+
//# sourceMappingURL=echo.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../../server/controllers/herbalife/apis/echo.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAbD,SAAgB,IAAI;IAClB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,CAAC,GAAG;YACb,yBAAY,GAAG,EAAE;QACnB,CAAC;QACD,SAAS,CAAC,GAAG;YACX,yBAAY,GAAG,EAAE;QACnB,CAAC;QACD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;YACrD,yBAAY,OAAO,EAAE;QACvB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["export function echo() {\n return {\n path: '/echo',\n denormalize(req) {\n return { ...req }\n },\n normalize(res) {\n return { ...res }\n },\n action({ store, method, path, request, platformAction }) {\n return { ...request }\n }\n }\n}\n"]}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getOutboundOrder = getOutboundOrder;
|
4
|
+
function getOutboundOrder() {
|
5
|
+
return {
|
6
|
+
method: 'get',
|
7
|
+
path: '{folderPath}/{folderType}/sob/data/{fileKey}',
|
8
|
+
denormalize(req) {
|
9
|
+
const { folderPath, folderType, fileKey } = req;
|
10
|
+
return {
|
11
|
+
resource: { folderPath, folderType, fileKey }
|
12
|
+
};
|
13
|
+
},
|
14
|
+
normalize(res, { sftp }) {
|
15
|
+
const { Order } = res;
|
16
|
+
let isAccept = false;
|
17
|
+
const responseFilePattern = JSON.parse(sftp.responseFilePattern);
|
18
|
+
const acceptOrderTypes = responseFilePattern.acceptOrderTypes; // ['RSO', 'MSO', 'MSBO']
|
19
|
+
const acceptNTSStatuses = responseFilePattern.acceptNTSStatuses; //['', 'BACKORDER']
|
20
|
+
const acceptWarehouseNumber = responseFilePattern.acceptWarehouseNumber; //['NK']
|
21
|
+
const acceptCommand = responseFilePattern.acceptCommand; //['NTS', '']
|
22
|
+
const acceptFreightCode = responseFilePattern.acceptFreightCode; // ['PU']
|
23
|
+
let orderHeader = Order.OrderHeader;
|
24
|
+
let generalInfo = orderHeader.General;
|
25
|
+
let distributorDetails = orderHeader.DistributorDetails;
|
26
|
+
let shippingInstructions = Order.ShippingInstructions;
|
27
|
+
let orderType = generalInfo.OrderType._text;
|
28
|
+
let ntsStatus = generalInfo.NTSStatus._text || '';
|
29
|
+
let command = generalInfo.Command._text || '';
|
30
|
+
let warehouseNumber = generalInfo.WarehouseNumber._text;
|
31
|
+
let freightCode = shippingInstructions.FreightCode._text;
|
32
|
+
if (acceptWarehouseNumber.includes(warehouseNumber) &&
|
33
|
+
acceptOrderTypes.includes(orderType) &&
|
34
|
+
acceptNTSStatuses.includes(ntsStatus) &&
|
35
|
+
acceptCommand.includes(command) &&
|
36
|
+
acceptFreightCode.includes(freightCode)) {
|
37
|
+
isAccept = true;
|
38
|
+
}
|
39
|
+
let shippingInstruction = shippingInstructions.ShippingInstructions._text;
|
40
|
+
let ntsDateParts = generalInfo.NTS_Date._text.split('/');
|
41
|
+
let releaseDate = ntsDateParts[2] + '-' + ntsDateParts[1] + '-' + ntsDateParts[0];
|
42
|
+
let orderInfo = {
|
43
|
+
refNo: generalInfo.OrderNumber._text,
|
44
|
+
refNo2: warehouseNumber,
|
45
|
+
type: 'b2b',
|
46
|
+
releaseDate,
|
47
|
+
collectionOrderNo: generalInfo.OrderNumber._text,
|
48
|
+
marketplaceOrderStatus: ntsStatus,
|
49
|
+
ownTransport: true,
|
50
|
+
exportOption: false,
|
51
|
+
packingOption: false,
|
52
|
+
remark: shippingInstruction,
|
53
|
+
billTo: {
|
54
|
+
billingAddress: distributorDetails.BillTo.BillToAddress._text
|
55
|
+
},
|
56
|
+
deliverTo: {
|
57
|
+
deliveryAddress1: distributorDetails.ShipTo.Address1._text,
|
58
|
+
deliveryAddress2: distributorDetails.ShipTo.Address2._text,
|
59
|
+
deliveryAddress3: distributorDetails.ShipTo.Address3._text,
|
60
|
+
attentionTo: distributorDetails.ShipTo.Name._text,
|
61
|
+
city: distributorDetails.ShipTo.City._text,
|
62
|
+
state: distributorDetails.ShipTo.ShipToState._text,
|
63
|
+
postalCode: distributorDetails.ShipTo.Zipcode._text,
|
64
|
+
country: distributorDetails.ShipTo.Country._text,
|
65
|
+
phone1: distributorDetails.ShipTo.Phone._text
|
66
|
+
}
|
67
|
+
};
|
68
|
+
let OrderLine = Order.PickList;
|
69
|
+
let totalItems = parseFloat(Order.PickList.LinesInPickList._text);
|
70
|
+
let itemsToPick = [];
|
71
|
+
let checkDuplicationValidation;
|
72
|
+
if (totalItems == 1) {
|
73
|
+
if (parseFloat(OrderLine.Item.QuantityReleased._text) > 0) {
|
74
|
+
itemsToPick.push({
|
75
|
+
product: {
|
76
|
+
sku: OrderLine.Item.StockingSKU._text
|
77
|
+
},
|
78
|
+
releaseQty: parseFloat(OrderLine.Item.QuantityReleased._text)
|
79
|
+
});
|
80
|
+
}
|
81
|
+
}
|
82
|
+
else {
|
83
|
+
OrderLine.Item.map(line => {
|
84
|
+
if (parseFloat(line.QuantityReleased._text) > 0) {
|
85
|
+
itemsToPick.push({
|
86
|
+
product: {
|
87
|
+
sku: line.StockingSKU._text
|
88
|
+
},
|
89
|
+
releaseQty: parseFloat(line.QuantityReleased._text)
|
90
|
+
});
|
91
|
+
}
|
92
|
+
});
|
93
|
+
}
|
94
|
+
if (ntsStatus == 'BACKORDER' && OrderLine.Item.some(itm => itm.QuantityReleased._text == 0)) {
|
95
|
+
checkDuplicationValidation = false;
|
96
|
+
}
|
97
|
+
if (itemsToPick.length == 0) {
|
98
|
+
isAccept = false;
|
99
|
+
}
|
100
|
+
let orderItems = itemsToPick;
|
101
|
+
let result = Object.assign(Object.assign({}, orderInfo), { orderInventories: orderItems, isAccept,
|
102
|
+
checkDuplicationValidation });
|
103
|
+
return result;
|
104
|
+
}
|
105
|
+
};
|
106
|
+
}
|
107
|
+
//# sourceMappingURL=get-outbound-order.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-outbound-order.js","sourceRoot":"","sources":["../../../../server/controllers/herbalife/apis/get-outbound-order.ts"],"names":[],"mappings":";;AAAA,4CAsHC;AAtHD,SAAgB,gBAAgB;IAC9B,OAAO;QACL,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,8CAA8C;QACpD,WAAW,CAAC,GAAG;YACb,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;YAC/C,OAAO;gBACL,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE;aAC9C,CAAA;QACH,CAAC;QACD,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE;YACrB,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;YACrB,IAAI,QAAQ,GAAY,KAAK,CAAA;YAE7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAChE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAA,CAAC,yBAAyB;YACvF,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAA,CAAC,mBAAmB;YACnF,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,qBAAqB,CAAA,CAAC,QAAQ;YAChF,MAAM,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAA,CAAC,aAAa;YACrE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAA,CAAC,SAAS;YAEzE,IAAI,WAAW,GAAQ,KAAK,CAAC,WAAW,CAAA;YACxC,IAAI,WAAW,GAAQ,WAAW,CAAC,OAAO,CAAA;YAC1C,IAAI,kBAAkB,GAAQ,WAAW,CAAC,kBAAkB,CAAA;YAC5D,IAAI,oBAAoB,GAAQ,KAAK,CAAC,oBAAoB,CAAA;YAE1D,IAAI,SAAS,GAAW,WAAW,CAAC,SAAS,CAAC,KAAK,CAAA;YACnD,IAAI,SAAS,GAAW,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAA;YACzD,IAAI,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;YACrD,IAAI,eAAe,GAAW,WAAW,CAAC,eAAe,CAAC,KAAK,CAAA;YAC/D,IAAI,WAAW,GAAW,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAA;YAEhE,IACE,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC/C,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACpC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACrC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC/B,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EACvC,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;YAED,IAAI,mBAAmB,GAAW,oBAAoB,CAAC,oBAAoB,CAAC,KAAK,CAAA;YACjF,IAAI,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxD,IAAI,WAAW,GAAW,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;YACzF,IAAI,SAAS,GAAQ;gBACnB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK;gBACpC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,KAAK;gBACX,WAAW;gBACX,iBAAiB,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK;gBAChD,sBAAsB,EAAE,SAAS;gBACjC,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,KAAK;gBACpB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE;oBACN,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK;iBAC9D;gBACD,SAAS,EAAE;oBACT,gBAAgB,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;oBAC1D,gBAAgB,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;oBAC1D,gBAAgB,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;oBAC1D,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;oBACjD,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;oBAC1C,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK;oBAClD,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;oBACnD,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;oBAChD,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;iBAC9C;aACF,CAAA;YAED,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC9B,IAAI,UAAU,GAAW,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YACzE,IAAI,WAAW,GAAU,EAAE,CAAA;YAC3B,IAAI,0BAA0B,CAAA;YAC9B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1D,WAAW,CAAC,IAAI,CAAC;wBACf,OAAO,EAAE;4BACP,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;yBACtC;wBACD,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChD,WAAW,CAAC,IAAI,CAAC;4BACf,OAAO,EAAE;gCACP,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;6BAC5B;4BACD,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;yBACpD,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC5F,0BAA0B,GAAG,KAAK,CAAA;YACpC,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5B,QAAQ,GAAG,KAAK,CAAA;YAClB,CAAC;YAED,IAAI,UAAU,GAAU,WAAW,CAAA;YAEnC,IAAI,MAAM,mCACL,SAAS,KACZ,gBAAgB,EAAE,UAAU,EAC5B,QAAQ;gBACR,0BAA0B,GAC3B,CAAA;YAED,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["export function getOutboundOrder() {\n return {\n method: 'get',\n path: '{folderPath}/{folderType}/sob/data/{fileKey}',\n denormalize(req) {\n const { folderPath, folderType, fileKey } = req\n return {\n resource: { folderPath, folderType, fileKey }\n }\n },\n normalize(res, { sftp }) {\n const { Order } = res\n let isAccept: boolean = false\n\n const responseFilePattern = JSON.parse(sftp.responseFilePattern)\n const acceptOrderTypes = responseFilePattern.acceptOrderTypes // ['RSO', 'MSO', 'MSBO']\n const acceptNTSStatuses = responseFilePattern.acceptNTSStatuses //['', 'BACKORDER']\n const acceptWarehouseNumber = responseFilePattern.acceptWarehouseNumber //['NK']\n const acceptCommand = responseFilePattern.acceptCommand //['NTS', '']\n const acceptFreightCode = responseFilePattern.acceptFreightCode // ['PU']\n\n let orderHeader: any = Order.OrderHeader\n let generalInfo: any = orderHeader.General\n let distributorDetails: any = orderHeader.DistributorDetails\n let shippingInstructions: any = Order.ShippingInstructions\n\n let orderType: string = generalInfo.OrderType._text\n let ntsStatus: string = generalInfo.NTSStatus._text || ''\n let command: string = generalInfo.Command._text || ''\n let warehouseNumber: string = generalInfo.WarehouseNumber._text\n let freightCode: string = shippingInstructions.FreightCode._text\n\n if (\n acceptWarehouseNumber.includes(warehouseNumber) &&\n acceptOrderTypes.includes(orderType) &&\n acceptNTSStatuses.includes(ntsStatus) &&\n acceptCommand.includes(command) &&\n acceptFreightCode.includes(freightCode)\n ) {\n isAccept = true\n }\n\n let shippingInstruction: string = shippingInstructions.ShippingInstructions._text\n let ntsDateParts = generalInfo.NTS_Date._text.split('/')\n let releaseDate: string = ntsDateParts[2] + '-' + ntsDateParts[1] + '-' + ntsDateParts[0]\n let orderInfo: any = {\n refNo: generalInfo.OrderNumber._text,\n refNo2: warehouseNumber,\n type: 'b2b',\n releaseDate,\n collectionOrderNo: generalInfo.OrderNumber._text,\n marketplaceOrderStatus: ntsStatus,\n ownTransport: true,\n exportOption: false,\n packingOption: false,\n remark: shippingInstruction,\n billTo: {\n billingAddress: distributorDetails.BillTo.BillToAddress._text\n },\n deliverTo: {\n deliveryAddress1: distributorDetails.ShipTo.Address1._text,\n deliveryAddress2: distributorDetails.ShipTo.Address2._text,\n deliveryAddress3: distributorDetails.ShipTo.Address3._text,\n attentionTo: distributorDetails.ShipTo.Name._text,\n city: distributorDetails.ShipTo.City._text,\n state: distributorDetails.ShipTo.ShipToState._text,\n postalCode: distributorDetails.ShipTo.Zipcode._text,\n country: distributorDetails.ShipTo.Country._text,\n phone1: distributorDetails.ShipTo.Phone._text\n }\n }\n\n let OrderLine = Order.PickList\n let totalItems: number = parseFloat(Order.PickList.LinesInPickList._text)\n let itemsToPick: any[] = []\n let checkDuplicationValidation\n if (totalItems == 1) {\n if (parseFloat(OrderLine.Item.QuantityReleased._text) > 0) {\n itemsToPick.push({\n product: {\n sku: OrderLine.Item.StockingSKU._text\n },\n releaseQty: parseFloat(OrderLine.Item.QuantityReleased._text)\n })\n }\n } else {\n OrderLine.Item.map(line => {\n if (parseFloat(line.QuantityReleased._text) > 0) {\n itemsToPick.push({\n product: {\n sku: line.StockingSKU._text\n },\n releaseQty: parseFloat(line.QuantityReleased._text)\n })\n }\n })\n }\n\n if (ntsStatus == 'BACKORDER' && OrderLine.Item.some(itm => itm.QuantityReleased._text == 0)) {\n checkDuplicationValidation = false\n }\n\n if (itemsToPick.length == 0) {\n isAccept = false\n }\n\n let orderItems: any[] = itemsToPick\n\n let result: any = {\n ...orderInfo,\n orderInventories: orderItems,\n isAccept,\n checkDuplicationValidation\n }\n\n return result\n }\n }\n}\n"]}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
4
|
+
tslib_1.__exportStar(require("./echo"), exports);
|
5
|
+
tslib_1.__exportStar(require("./get-outbound-order"), exports);
|
6
|
+
tslib_1.__exportStar(require("./create-shipment"), exports);
|
7
|
+
tslib_1.__exportStar(require("./create-serial-number"), exports);
|
8
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/controllers/herbalife/apis/index.ts"],"names":[],"mappings":";;;AAAA,iDAAsB;AACtB,+DAAoC;AACpC,4DAAiC;AACjC,iEAAsC","sourcesContent":["export * from './echo'\nexport * from './get-outbound-order'\nexport * from './create-shipment'\nexport * from './create-serial-number'\n"]}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Herbalife = void 0;
|
4
|
+
require("../../sftp-s3");
|
5
|
+
const xml_js_1 = require("xml-js");
|
6
|
+
const sftp_const_1 = require("../../sftp-const");
|
7
|
+
const generate_files_1 = require("../../util/generate-files");
|
8
|
+
const debug = require('debug')('things-factory:integration-sftp:herbalife');
|
9
|
+
class Herbalife {
|
10
|
+
constructor() { }
|
11
|
+
async get(path, data = {}) {
|
12
|
+
const fileResult = await sftp_const_1.SFTPFILESTORAGE.readFile(path, 'utf-8');
|
13
|
+
const item = (0, xml_js_1.xml2js)(fileResult, {
|
14
|
+
compact: true
|
15
|
+
});
|
16
|
+
const result = Object.assign({}, item);
|
17
|
+
return result;
|
18
|
+
}
|
19
|
+
async post(path, data = {}) {
|
20
|
+
const { title, backupTitle, content, sftp, backupPath } = data;
|
21
|
+
let params = [
|
22
|
+
{
|
23
|
+
title,
|
24
|
+
uploadPath: path,
|
25
|
+
content
|
26
|
+
}
|
27
|
+
];
|
28
|
+
if (backupPath) {
|
29
|
+
params.push({
|
30
|
+
title: backupTitle,
|
31
|
+
uploadPath: backupPath,
|
32
|
+
content
|
33
|
+
});
|
34
|
+
}
|
35
|
+
await (0, generate_files_1.generateFiles)(params);
|
36
|
+
return sftp;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
exports.Herbalife = Herbalife;
|
40
|
+
//# sourceMappingURL=herbalife.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"herbalife.js","sourceRoot":"","sources":["../../../server/controllers/herbalife/herbalife.ts"],"names":[],"mappings":";;;AAAA,yBAAsB;AAEtB,mCAA+B;AAG/B,iDAAkD;AAClD,8DAAyD;AAEzD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,2CAA2C,CAAC,CAAA;AAI3E,MAAa,SAAS;IACpB,gBAAe,CAAC;IAEhB,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAY,EAAE;QACpC,MAAM,UAAU,GAAQ,MAAM,4BAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACrE,MAAM,IAAI,GAAQ,IAAA,eAAM,EAAC,UAAU,EAAE;YACnC,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QACF,MAAM,MAAM,qBAAa,IAAI,CAAE,CAAA;QAC/B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAY,EAAE;QACrC,MAAM,EACJ,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,EACJ,UAAU,EACX,GAA4F,IAAI,CAAA;QAEjG,IAAI,MAAM,GAAU;YAClB;gBACE,KAAK;gBACL,UAAU,EAAE,IAAI;gBAChB,OAAO;aACR;SACF,CAAA;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,WAAW;gBAClB,UAAU,EAAE,UAAU;gBACtB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,IAAA,8BAAa,EAAC,MAAM,CAAC,CAAA;QAE3B,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAxCD,8BAwCC","sourcesContent":["import '../../sftp-s3'\n\nimport { xml2js } from 'xml-js'\n\nimport { Sftp } from '../../service'\nimport { SFTPFILESTORAGE } from '../../sftp-const'\nimport { generateFiles } from '../../util/generate-files'\n\nconst debug = require('debug')('things-factory:integration-sftp:herbalife')\n\nexport type HerbalifeConfig = {}\n\nexport class Herbalife {\n constructor() {}\n\n async get(path: string, data: any = {}) {\n const fileResult: any = await SFTPFILESTORAGE.readFile(path, 'utf-8')\n const item: any = xml2js(fileResult, {\n compact: true\n })\n const result: any = { ...item }\n return result\n }\n\n async post(path: string, data: any = {}) {\n const {\n title,\n backupTitle,\n content,\n sftp,\n backupPath\n }: { title: string; backupTitle: string; content: string; sftp: Sftp; backupPath: string } = data\n\n let params: any[] = [\n {\n title,\n uploadPath: path,\n content\n }\n ]\n\n if (backupPath) {\n params.push({\n title: backupTitle,\n uploadPath: backupPath,\n content\n })\n }\n await generateFiles(params)\n\n return sftp\n }\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './herbalife';
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const tslib_1 = require("tslib");
|
4
|
+
const sftp_api_1 = require("../sftp-api");
|
5
|
+
const APIS = tslib_1.__importStar(require("./apis"));
|
6
|
+
const platform_action_1 = require("./platform-action");
|
7
|
+
tslib_1.__exportStar(require("./herbalife"), exports);
|
8
|
+
sftp_api_1.SftpAPI.registerPlatform('herbalife', platform_action_1.action, APIS);
|
9
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/herbalife/index.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,qDAA8B;AAC9B,uDAA0C;AAE1C,sDAA2B;AAE3B,kBAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,wBAAM,EAAE,IAAI,CAAC,CAAA","sourcesContent":["import { SftpAPI } from '../sftp-api'\nimport * as APIS from './apis'\nimport { action } from './platform-action'\n\nexport * from './herbalife'\n\nSftpAPI.registerPlatform('herbalife', action, APIS)\n"]}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.action = void 0;
|
4
|
+
const herbalife_1 = require("./herbalife");
|
5
|
+
function substitute(path, obj) {
|
6
|
+
var props = [];
|
7
|
+
var re = /{([^}]+)}/g;
|
8
|
+
var text;
|
9
|
+
while ((text = re.exec(path))) {
|
10
|
+
props.push(text[1]);
|
11
|
+
}
|
12
|
+
var result = path;
|
13
|
+
props.forEach(prop => {
|
14
|
+
let value = obj[prop.trim()];
|
15
|
+
result = result.replace(`{${prop}}`, value === undefined ? '' : value);
|
16
|
+
});
|
17
|
+
return result;
|
18
|
+
}
|
19
|
+
const action = async ({ method = 'get', path, request }) => {
|
20
|
+
const client = new herbalife_1.Herbalife();
|
21
|
+
const { resource = {}, payload = {} } = request;
|
22
|
+
path = substitute(path, resource);
|
23
|
+
var response = await client[method](path, payload);
|
24
|
+
if (response.errors) {
|
25
|
+
throw response;
|
26
|
+
}
|
27
|
+
return response;
|
28
|
+
};
|
29
|
+
exports.action = action;
|
30
|
+
//# sourceMappingURL=platform-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"platform-action.js","sourceRoot":"","sources":["../../../server/controllers/herbalife/platform-action.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG;IAC3B,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,EAAE,GAAG,YAAY,CAAA;IACrB,IAAI,IAAI,CAAA;IAER,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,IAAI,qBAAS,EAAE,CAAA;IAE9B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;IAE/C,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEjC,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,QAAQ,CAAA;IAChB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAbY,QAAA,MAAM,UAalB","sourcesContent":["import { Herbalife } from './herbalife'\n\nfunction substitute(path, obj) {\n var props = []\n var re = /{([^}]+)}/g\n var text\n\n while ((text = re.exec(path))) {\n props.push(text[1])\n }\n\n var result = path\n props.forEach(prop => {\n let value = obj[prop.trim()]\n result = result.replace(`{${prop}}`, value === undefined ? '' : value)\n })\n\n return result\n}\n\nexport const action = async ({ method = 'get', path, request }) => {\n const client = new Herbalife()\n\n const { resource = {}, payload = {} } = request\n\n path = substitute(path, resource)\n\n var response = await client[method](path, payload)\n if (response.errors) {\n throw response\n }\n\n return response\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,uBAAoB;AAEpB,qDAA0B","sourcesContent":["import './herbalife'\n\nexport * from './sftp-api'\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const api: (target: Object, property: string, descriptor: TypedPropertyDescriptor<any>) => any;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.api = void 0;
|
4
|
+
const tslib_1 = require("tslib");
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
6
|
+
const debug = (0, debug_1.default)('things-factory:integration-sftp:sftp-api-decorator');
|
7
|
+
const NOOP = v => v;
|
8
|
+
const api = (target, property, descriptor) => {
|
9
|
+
const method = descriptor.value;
|
10
|
+
descriptor.value = async function (sftp, request) {
|
11
|
+
const SftpAPI = this;
|
12
|
+
var { platform } = sftp;
|
13
|
+
var { action: platformAction, apis } = SftpAPI.getPlatform(platform);
|
14
|
+
var m = apis[method.name];
|
15
|
+
if (!m) {
|
16
|
+
throw Error(`SFTP doesn't have API ${method.name}`);
|
17
|
+
}
|
18
|
+
var { path, method: httpMethod = 'post', denormalize = NOOP, normalize = NOOP, action = platformAction } = m.apply(this, [request]);
|
19
|
+
var denormalized = await denormalize(request || {}, { sftp });
|
20
|
+
debug('request', denormalized);
|
21
|
+
var response = await action.apply(this, [{ sftp, method: httpMethod, path, request: denormalized, platformAction }]);
|
22
|
+
debug('response', response);
|
23
|
+
return await normalize(response, { sftp });
|
24
|
+
};
|
25
|
+
return descriptor;
|
26
|
+
};
|
27
|
+
exports.api = api;
|
28
|
+
//# sourceMappingURL=decorators.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../server/controllers/sftp-api/decorators.ts"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAIzB,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,oDAAoD,CAAC,CAAA;AAEzE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEZ,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,UAAwC,EAAO,EAAE;IACrG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAA;IAE/B,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,IAAU,EAAE,OAAO;QACpD,MAAM,OAAO,GAAG,IAAI,CAAA;QAEpB,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAEvB,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAEpE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,EACF,IAAI,EACJ,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,MAAM,GAAG,cAAc,EACxB,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;QAE5B,IAAI,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE9B,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAEpH,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE3B,OAAO,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAlCY,QAAA,GAAG,OAkCf","sourcesContent":["import Debug from 'debug'\n\nimport { Sftp } from '../../service'\n\nconst debug = Debug('things-factory:integration-sftp:sftp-api-decorator')\n\nconst NOOP = v => v\n\nexport const api = (target: Object, property: string, descriptor: TypedPropertyDescriptor<any>): any => {\n const method = descriptor.value\n\n descriptor.value = async function (sftp: Sftp, request) {\n const SftpAPI = this\n\n var { platform } = sftp\n\n var { action: platformAction, apis } = SftpAPI.getPlatform(platform)\n\n var m = apis[method.name]\n if (!m) {\n throw Error(`SFTP doesn't have API ${method.name}`)\n }\n\n var {\n path,\n method: httpMethod = 'post',\n denormalize = NOOP,\n normalize = NOOP,\n action = platformAction\n } = m.apply(this, [request])\n\n var denormalized = await denormalize(request || {}, { sftp })\n debug('request', denormalized)\n\n var response = await action.apply(this, [{ sftp, method: httpMethod, path, request: denormalized, platformAction }])\n\n debug('response', response)\n\n return await normalize(response, { sftp })\n }\n\n return descriptor\n}\n"]}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { Sftp } from '../../service';
|
2
|
+
export declare class SftpAPI {
|
3
|
+
static platforms: {};
|
4
|
+
static registerPlatform(name: any, action: any, apis: any): void;
|
5
|
+
static getPlatform(name: any): any;
|
6
|
+
static getSftp(id: any): Promise<Sftp>;
|
7
|
+
static echo(sftp: any, req: any): any;
|
8
|
+
static getOutboundOrder(sftp: any, req: any): any;
|
9
|
+
static createShipment(sftp: any, req: any): any;
|
10
|
+
static createSerialNumber(sftp: any, req: any): any;
|
11
|
+
}
|