@contrail/flexplm 1.1.51 → 1.1.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.
|
@@ -18,10 +18,16 @@ export declare class BaseProcessPublishAssortment {
|
|
|
18
18
|
process(event: any): Promise<{
|
|
19
19
|
results: {
|
|
20
20
|
message: any;
|
|
21
|
+
event: any;
|
|
21
22
|
};
|
|
22
23
|
skip_await: boolean;
|
|
23
24
|
} | {
|
|
24
25
|
results: any;
|
|
26
|
+
event: {
|
|
27
|
+
assortmentId: string;
|
|
28
|
+
assortmentPublishChangeId: string;
|
|
29
|
+
};
|
|
30
|
+
resultsCount: any;
|
|
25
31
|
skip_await?: undefined;
|
|
26
32
|
}>;
|
|
27
33
|
getPublishInfo(assortmentId: string, assortmentPublishChangeId: string, apcHistory: any, publisher: any): Promise<any>;
|
|
@@ -50,12 +56,24 @@ export declare class BaseProcessPublishAssortment {
|
|
|
50
56
|
processPublish(pcd: PublishChangeData, changeDetail: any, fullChange: any, deleteChanges: any): Promise<{
|
|
51
57
|
results: {
|
|
52
58
|
message: string;
|
|
59
|
+
event: {
|
|
60
|
+
assortmentId: string;
|
|
61
|
+
assortmentPublishChangeId: string;
|
|
62
|
+
};
|
|
53
63
|
};
|
|
54
64
|
skip_await: boolean;
|
|
65
|
+
event?: undefined;
|
|
66
|
+
resultsCount?: undefined;
|
|
55
67
|
} | {
|
|
56
68
|
results: any;
|
|
69
|
+
event: {
|
|
70
|
+
assortmentId: string;
|
|
71
|
+
assortmentPublishChangeId: string;
|
|
72
|
+
};
|
|
73
|
+
resultsCount: any;
|
|
57
74
|
skip_await?: undefined;
|
|
58
75
|
}>;
|
|
76
|
+
getResultsCount(events: any): any;
|
|
59
77
|
private sendEvents;
|
|
60
78
|
private sendToFlexPLM;
|
|
61
79
|
private saveToLocalFile;
|
|
@@ -10,9 +10,17 @@ const type_conversion_utils_1 = require("../util/type-conversion-utils");
|
|
|
10
10
|
const fsPromise = require("fs/promises");
|
|
11
11
|
const path = require("path");
|
|
12
12
|
const app_framework_1 = require("@contrail/app-framework");
|
|
13
|
+
var EventStatuses;
|
|
14
|
+
(function (EventStatuses) {
|
|
15
|
+
EventStatuses["NOT_PUBLISHABLE"] = "Not_Publishable";
|
|
16
|
+
EventStatuses["NO_FEDERATION_INFO"] = "No_Federation_Information";
|
|
17
|
+
EventStatuses["NO_EVENTS_TO_SEND"] = "No_Events_to_Send";
|
|
18
|
+
EventStatuses["FAILURE"] = "Failure";
|
|
19
|
+
EventStatuses["SUCCESS"] = "Success";
|
|
20
|
+
})(EventStatuses || (EventStatuses = {}));
|
|
13
21
|
class BaseProcessPublishAssortment {
|
|
14
22
|
constructor(_config, _dc, _mapFileUtil) {
|
|
15
|
-
this.TTL =
|
|
23
|
+
this.TTL = 30 * 24 * 60 * 60 * 1000;
|
|
16
24
|
this.cache = {
|
|
17
25
|
carriedFromSeason: {}
|
|
18
26
|
};
|
|
@@ -34,9 +42,15 @@ class BaseProcessPublishAssortment {
|
|
|
34
42
|
}
|
|
35
43
|
catch (e) {
|
|
36
44
|
const message = e.message;
|
|
45
|
+
const eventStatus = (message.includes(BaseProcessPublishAssortment.ASSORTMENT_NOT_PUBLISHABLE)) ? EventStatuses.NOT_PUBLISHABLE :
|
|
46
|
+
(message.startsWith(BaseProcessPublishAssortment.ASSORTMENT_NO_FED_INFO)) ? EventStatuses.NO_FEDERATION_INFO :
|
|
47
|
+
EventStatuses.FAILURE;
|
|
48
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + eventStatus
|
|
49
|
+
+ ': assortmentId: ' + event.assortmentId + ': assortmentPublishChangeId: ' + event.assortmentPublishChangeId;
|
|
50
|
+
console.log(JSON.stringify(processStatus));
|
|
37
51
|
console.log(message);
|
|
38
52
|
const output = {
|
|
39
|
-
results: { message },
|
|
53
|
+
results: { message, event },
|
|
40
54
|
skip_await: true
|
|
41
55
|
};
|
|
42
56
|
return output;
|
|
@@ -502,20 +516,44 @@ class BaseProcessPublishAssortment {
|
|
|
502
516
|
}
|
|
503
517
|
async processPublish(pcd, changeDetail, fullChange, deleteChanges) {
|
|
504
518
|
console.info('processPublish-start');
|
|
519
|
+
const event = {
|
|
520
|
+
assortmentId: pcd.assortmentId,
|
|
521
|
+
assortmentPublishChangeId: pcd.assortmentPublishChangeId
|
|
522
|
+
};
|
|
505
523
|
const assortmentItemFullChangeMap = this.getFullChangeAssortmentMap(fullChange);
|
|
506
524
|
const assortmentItemDeleteMap = this.getDeleteChangesAssortmentMap(deleteChanges);
|
|
507
525
|
pcd.itemFamilyChanges = this.getItemFamilyChanges(pcd, changeDetail, assortmentItemFullChangeMap, assortmentItemDeleteMap);
|
|
508
526
|
const events = await this.getEventsForPublishChangeData(pcd);
|
|
509
527
|
if (events.length === 0) {
|
|
528
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
|
|
529
|
+
+ ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId;
|
|
530
|
+
console.log(processStatus);
|
|
510
531
|
const message = 'No Events to Send; returning';
|
|
511
532
|
console.log(message);
|
|
512
533
|
return {
|
|
513
|
-
results: { message },
|
|
534
|
+
results: { message, event },
|
|
514
535
|
skip_await: true
|
|
515
536
|
};
|
|
516
537
|
}
|
|
517
538
|
const results = await this.sendEvents(events);
|
|
518
|
-
|
|
539
|
+
const resultsCount = this.getResultsCount(events);
|
|
540
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
|
|
541
|
+
+ ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId
|
|
542
|
+
+ ': resultsCount: ' + JSON.stringify(resultsCount);
|
|
543
|
+
console.log(processStatus);
|
|
544
|
+
return { results, event, resultsCount };
|
|
545
|
+
}
|
|
546
|
+
getResultsCount(events) {
|
|
547
|
+
return events.reduce((acc, event) => {
|
|
548
|
+
const objectClass = event?.objectClass;
|
|
549
|
+
if (objectClass === 'LCSProductSeasonLink') {
|
|
550
|
+
acc.productSeasons++;
|
|
551
|
+
}
|
|
552
|
+
else if (objectClass === 'LCSSKUSeasonLink') {
|
|
553
|
+
acc.colorwaySeasons++;
|
|
554
|
+
}
|
|
555
|
+
return acc;
|
|
556
|
+
}, { productSeasons: 0, colorwaySeasons: 0 });
|
|
519
557
|
}
|
|
520
558
|
async sendEvents(events) {
|
|
521
559
|
console.info('sendEvents()');
|
package/package.json
CHANGED
|
@@ -12,9 +12,17 @@ import path = require('path');
|
|
|
12
12
|
import { MapFileUtil } from '@contrail/transform-data';
|
|
13
13
|
import { Logger } from '@contrail/app-framework';
|
|
14
14
|
|
|
15
|
+
enum EventStatuses {
|
|
16
|
+
NOT_PUBLISHABLE = 'Not_Publishable',
|
|
17
|
+
NO_FEDERATION_INFO = 'No_Federation_Information',
|
|
18
|
+
NO_EVENTS_TO_SEND = 'No_Events_to_Send',
|
|
19
|
+
FAILURE = 'Failure',
|
|
20
|
+
SUCCESS = 'Success',
|
|
21
|
+
}
|
|
22
|
+
|
|
15
23
|
export class BaseProcessPublishAssortment {
|
|
16
24
|
|
|
17
|
-
private TTL =
|
|
25
|
+
private TTL = 30 * 24 * 60 * 60 * 1_000; // 30 days
|
|
18
26
|
static ASSORTMENT_NOT_PUBLISHABLE = 'Assortment isn\'t marked for publishing to FlexPLM';
|
|
19
27
|
static ASSORTMENT_NO_FED_INFO = 'Assortment doesn\'t have all "identifier" properties, so there is no processing. Identifier properties: ';
|
|
20
28
|
static NOT_ABLE_TO_PROCESS_DELETE_CHANGES = 'Error: Not able to process delete changes';
|
|
@@ -47,9 +55,16 @@ export class BaseProcessPublishAssortment {
|
|
|
47
55
|
seasonFed = await this.getSeasonFederation(assortmentId);
|
|
48
56
|
} catch (e) {
|
|
49
57
|
const message = e.message;
|
|
58
|
+
const eventStatus =
|
|
59
|
+
(message.includes(BaseProcessPublishAssortment.ASSORTMENT_NOT_PUBLISHABLE)) ? EventStatuses.NOT_PUBLISHABLE :
|
|
60
|
+
(message.startsWith(BaseProcessPublishAssortment.ASSORTMENT_NO_FED_INFO)) ? EventStatuses.NO_FEDERATION_INFO :
|
|
61
|
+
EventStatuses.FAILURE;
|
|
62
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + eventStatus
|
|
63
|
+
+ ': assortmentId: ' + event.assortmentId + ': assortmentPublishChangeId: ' + event.assortmentPublishChangeId;
|
|
64
|
+
console.log(JSON.stringify(processStatus));
|
|
50
65
|
console.log(message);
|
|
51
66
|
const output = {
|
|
52
|
-
results: { message },
|
|
67
|
+
results: { message, event },
|
|
53
68
|
skip_await: true
|
|
54
69
|
};
|
|
55
70
|
return output;
|
|
@@ -607,6 +622,10 @@ export class BaseProcessPublishAssortment {
|
|
|
607
622
|
}
|
|
608
623
|
async processPublish(pcd: PublishChangeData, changeDetail, fullChange, deleteChanges) {
|
|
609
624
|
console.info('processPublish-start');
|
|
625
|
+
const event = {
|
|
626
|
+
assortmentId: pcd.assortmentId,
|
|
627
|
+
assortmentPublishChangeId: pcd.assortmentPublishChangeId
|
|
628
|
+
};
|
|
610
629
|
|
|
611
630
|
const assortmentItemFullChangeMap = this.getFullChangeAssortmentMap(fullChange);
|
|
612
631
|
const assortmentItemDeleteMap = this.getDeleteChangesAssortmentMap(deleteChanges);
|
|
@@ -614,16 +633,39 @@ export class BaseProcessPublishAssortment {
|
|
|
614
633
|
|
|
615
634
|
const events = await this.getEventsForPublishChangeData(pcd);
|
|
616
635
|
if (events.length === 0) {
|
|
617
|
-
const
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
636
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
|
|
637
|
+
+ ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId;
|
|
638
|
+
console.log(processStatus);
|
|
639
|
+
const message = 'No Events to Send; returning';
|
|
640
|
+
console.log(message);
|
|
641
|
+
return {
|
|
642
|
+
results: { message, event },
|
|
643
|
+
skip_await: true
|
|
644
|
+
};
|
|
645
|
+
|
|
623
646
|
}
|
|
624
647
|
|
|
625
648
|
const results = await this.sendEvents(events);
|
|
626
|
-
|
|
649
|
+
const resultsCount = this.getResultsCount(events);
|
|
650
|
+
const processStatus = 'BaseProcessPublishAssortment: ' + EventStatuses.NO_EVENTS_TO_SEND
|
|
651
|
+
+ ': assortmentId: ' + pcd.assortmentId + ': assortmentPublishChangeId: ' + pcd.assortmentPublishChangeId
|
|
652
|
+
+ ': resultsCount: ' + JSON.stringify(resultsCount);
|
|
653
|
+
console.log(processStatus);
|
|
654
|
+
return { results, event, resultsCount };
|
|
655
|
+
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
getResultsCount(events) {
|
|
659
|
+
return events.reduce((acc, event) => {
|
|
660
|
+
const objectClass = event?.objectClass;
|
|
661
|
+
if (objectClass === 'LCSProductSeasonLink') {
|
|
662
|
+
acc.productSeasons++;
|
|
663
|
+
}
|
|
664
|
+
else if (objectClass === 'LCSSKUSeasonLink') {
|
|
665
|
+
acc.colorwaySeasons++;
|
|
666
|
+
}
|
|
667
|
+
return acc;
|
|
668
|
+
}, { productSeasons: 0, colorwaySeasons: 0 });
|
|
627
669
|
}
|
|
628
670
|
|
|
629
671
|
private async sendEvents(events: SeasonalPayload[]): Promise<any> {
|