@fiado/type-kit 3.597.0 → 3.599.0
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/_test_/unit/customerMessages/customerMessagesContract.test.ts +71 -0
- package/_test_/unit/messageMoments/MessageMomentClassification.test.ts +85 -0
- package/_test_/unit/retailIntegration/reconciliationPreviewContracts.test.ts +94 -0
- package/bin/customerMessages/constants/CustomerMessageLimits.d.ts +7 -0
- package/bin/customerMessages/constants/CustomerMessageLimits.js +13 -0
- package/bin/customerMessages/dtos/requests/CustomerManualMessageRequest.d.ts +6 -0
- package/bin/customerMessages/dtos/requests/CustomerManualMessageRequest.js +31 -0
- package/bin/customerMessages/dtos/requests/CustomerMessageHistoryQuery.d.ts +8 -0
- package/bin/customerMessages/dtos/requests/CustomerMessageHistoryQuery.js +40 -0
- package/bin/customerMessages/dtos/responses/CollectionQuotaDay.d.ts +9 -0
- package/bin/customerMessages/dtos/responses/CollectionQuotaDay.js +7 -0
- package/bin/customerMessages/dtos/responses/CollectionQuotaResponse.d.ts +8 -0
- package/bin/customerMessages/dtos/responses/CollectionQuotaResponse.js +7 -0
- package/bin/customerMessages/dtos/responses/CustomerManualMessageResponse.d.ts +4 -0
- package/bin/customerMessages/dtos/responses/CustomerManualMessageResponse.js +7 -0
- package/bin/customerMessages/dtos/responses/CustomerMessageHistoryItem.d.ts +19 -0
- package/bin/customerMessages/dtos/responses/CustomerMessageHistoryItem.js +7 -0
- package/bin/customerMessages/dtos/responses/CustomerMessageHistoryResponse.d.ts +8 -0
- package/bin/customerMessages/dtos/responses/CustomerMessageHistoryResponse.js +7 -0
- package/bin/customerMessages/index.d.ts +8 -0
- package/bin/customerMessages/index.js +24 -0
- package/bin/index.d.ts +1 -0
- package/bin/index.js +3 -1
- package/bin/messageMoments/constants/MessageMomentCatalog.d.ts +11 -0
- package/bin/messageMoments/constants/MessageMomentCatalog.js +13 -1
- package/bin/messageMoments/constants/MessageMomentClassification.d.ts +19 -0
- package/bin/messageMoments/constants/MessageMomentClassification.js +51 -0
- package/bin/messageMoments/enums/MessageMomentCategoryEnum.d.ts +5 -0
- package/bin/messageMoments/enums/MessageMomentCategoryEnum.js +9 -0
- package/bin/messageMoments/index.d.ts +2 -0
- package/bin/messageMoments/index.js +2 -0
- package/bin/retailIntegration/dtos/GetReconciliationResponses.d.ts +9 -0
- package/bin/retailIntegration/dtos/ReconciliationPreview.d.ts +21 -0
- package/bin/retailIntegration/dtos/ReconciliationPreview.js +5 -0
- package/bin/retailIntegration/dtos/RetailEventResult.d.ts +12 -0
- package/bin/retailIntegration/dtos/StartCatalogReconciliationRequest.d.ts +2 -0
- package/bin/retailIntegration/dtos/StartCatalogReconciliationRequest.js +6 -0
- package/bin/retailIntegration/dtos/StartOrgReconciliationRequest.d.ts +2 -0
- package/bin/retailIntegration/dtos/StartOrgReconciliationRequest.js +6 -0
- package/bin/retailIntegration/index.d.ts +1 -0
- package/bin/retailIntegration/index.js +1 -0
- package/package.json +1 -1
- package/src/customerMessages/constants/CustomerMessageLimits.ts +13 -0
- package/src/customerMessages/dtos/requests/CustomerManualMessageRequest.ts +16 -0
- package/src/customerMessages/dtos/requests/CustomerMessageHistoryQuery.ts +25 -0
- package/src/customerMessages/dtos/responses/CollectionQuotaDay.ts +10 -0
- package/src/customerMessages/dtos/responses/CollectionQuotaResponse.ts +9 -0
- package/src/customerMessages/dtos/responses/CustomerManualMessageResponse.ts +4 -0
- package/src/customerMessages/dtos/responses/CustomerMessageHistoryItem.ts +20 -0
- package/src/customerMessages/dtos/responses/CustomerMessageHistoryResponse.ts +9 -0
- package/src/customerMessages/index.ts +8 -0
- package/src/index.ts +3 -0
- package/src/messageMoments/constants/MessageMomentCatalog.ts +20 -1
- package/src/messageMoments/constants/MessageMomentClassification.ts +56 -0
- package/src/messageMoments/enums/MessageMomentCategoryEnum.ts +5 -0
- package/src/messageMoments/index.ts +2 -0
- package/src/retailIntegration/dtos/GetReconciliationResponses.ts +9 -0
- package/src/retailIntegration/dtos/ReconciliationPreview.ts +23 -0
- package/src/retailIntegration/dtos/RetailEventResult.ts +13 -0
- package/src/retailIntegration/dtos/StartCatalogReconciliationRequest.ts +7 -1
- package/src/retailIntegration/dtos/StartOrgReconciliationRequest.ts +7 -1
- package/src/retailIntegration/index.ts +1 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validate, ValidationError } from 'class-validator';
|
|
4
|
+
import { CustomerMessages } from '../../../src/index';
|
|
5
|
+
import {
|
|
6
|
+
CUSTOMER_MANUAL_MESSAGE_CHANNELS,
|
|
7
|
+
CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT,
|
|
8
|
+
CustomerManualMessageRequest,
|
|
9
|
+
CustomerMessageHistoryQuery,
|
|
10
|
+
} from '../../../src/customerMessages/index';
|
|
11
|
+
import { MessageMomentCategoryEnum } from '../../../src/messageMoments/index';
|
|
12
|
+
import { DeliveryChannelExtendedEnum } from '../../../src/messagesConnector/index';
|
|
13
|
+
|
|
14
|
+
const hasError = (errors: ValidationError[], property: string): boolean =>
|
|
15
|
+
errors.some((error) => error.property === property);
|
|
16
|
+
|
|
17
|
+
const validateHistory = async (payload: Record<string, unknown>): Promise<ValidationError[]> =>
|
|
18
|
+
validate(plainToInstance(CustomerMessageHistoryQuery, payload), { whitelist: true });
|
|
19
|
+
|
|
20
|
+
const validateManual = async (payload: Record<string, unknown>): Promise<ValidationError[]> =>
|
|
21
|
+
validate(plainToInstance(CustomerManualMessageRequest, payload), { whitelist: true });
|
|
22
|
+
|
|
23
|
+
describe('CustomerMessageHistoryQuery', () => {
|
|
24
|
+
it('acepta solo la categoría', async () => {
|
|
25
|
+
expect(await validateHistory({ category: 'SALE' })).toEqual([]);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('acepta cursor y limit del query string', async () => {
|
|
29
|
+
expect(await validateHistory({ category: 'CREDIT', cursor: 'abc', limit: '50' })).toEqual([]);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it.each([undefined, 'OTHER'])('rechaza la categoría %s', async (category) => {
|
|
33
|
+
expect(hasError(await validateHistory({ category }), 'category')).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it.each(['0', '51', '2.5', 'x'])('rechaza el limit %s', async (limit) => {
|
|
37
|
+
expect(hasError(await validateHistory({ category: 'SALE', limit }), 'limit')).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('el límite máximo es 50', () => {
|
|
41
|
+
expect(CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT).toBe(50);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('CustomerManualMessageRequest', () => {
|
|
46
|
+
it.each(['SMS', 'PUSH_NOTIFICATION'])('acepta el canal %s', async (channel) => {
|
|
47
|
+
expect(await validateManual({ templateId: 'PM-075', channel })).toEqual([]);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it.each(['MDM', 'MAIL', 'WHATSAPP', undefined])('rechaza el canal %s', async (channel) => {
|
|
51
|
+
expect(hasError(await validateManual({ templateId: 'PM-075', channel }), 'channel')).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it.each([undefined, 'PM-75', 'pm-075', 'PM-0755', 'X-075', 75])('rechaza el templateId %s', async (templateId) => {
|
|
55
|
+
expect(hasError(await validateManual({ templateId, channel: 'SMS' }), 'templateId')).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('los canales manuales son SMS y push', () => {
|
|
59
|
+
expect(CUSTOMER_MANUAL_MESSAGE_CHANNELS).toEqual([
|
|
60
|
+
DeliveryChannelExtendedEnum.SMS,
|
|
61
|
+
DeliveryChannelExtendedEnum.PUSH_NOTIFICATION,
|
|
62
|
+
]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('barril CustomerMessages', () => {
|
|
67
|
+
it('se publica desde el índice raíz', () => {
|
|
68
|
+
expect(CustomerMessages.CustomerManualMessageRequest).toBe(CustomerManualMessageRequest);
|
|
69
|
+
expect(MessageMomentCategoryEnum.SALE).toBe('SALE');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import {
|
|
3
|
+
MESSAGE_MOMENT_CATALOG,
|
|
4
|
+
MessageMomentCategoryEnum,
|
|
5
|
+
isCollectionMoment,
|
|
6
|
+
momentByMessageType,
|
|
7
|
+
momentsOfCategory,
|
|
8
|
+
} from '../../../src/messageMoments/index';
|
|
9
|
+
|
|
10
|
+
const S = MessageMomentCategoryEnum.SALE;
|
|
11
|
+
const C = MessageMomentCategoryEnum.CREDIT;
|
|
12
|
+
|
|
13
|
+
/** templateId, category, collection, manualSend. */
|
|
14
|
+
const EXPECTED: ReadonlyArray<[string, MessageMomentCategoryEnum, boolean, boolean]> = [
|
|
15
|
+
['PM-001', S, false, false],
|
|
16
|
+
['PM-002', S, false, false],
|
|
17
|
+
['PM-003', S, false, false],
|
|
18
|
+
['PM-004', S, false, false],
|
|
19
|
+
['PM-005', S, false, false],
|
|
20
|
+
['PM-010', C, true, false],
|
|
21
|
+
['PM-011', C, true, false],
|
|
22
|
+
['PM-012', C, true, false],
|
|
23
|
+
['PM-020', C, false, false],
|
|
24
|
+
['PM-021', C, false, false],
|
|
25
|
+
['PM-022', C, true, false],
|
|
26
|
+
['PM-023', C, false, false],
|
|
27
|
+
['PM-030', C, true, false],
|
|
28
|
+
['PM-031', C, true, false],
|
|
29
|
+
['PM-032', C, true, false],
|
|
30
|
+
['PM-033', C, true, false],
|
|
31
|
+
['PM-034', C, true, false],
|
|
32
|
+
['PM-040', C, true, false],
|
|
33
|
+
['PM-041', C, false, false],
|
|
34
|
+
['PM-050', C, false, false],
|
|
35
|
+
['PM-051', C, false, false],
|
|
36
|
+
['PM-052', C, false, false],
|
|
37
|
+
['PM-053', C, false, false],
|
|
38
|
+
['PM-054', C, false, false],
|
|
39
|
+
['PM-055', C, false, true],
|
|
40
|
+
['PM-056', C, false, false],
|
|
41
|
+
['PM-057', C, false, false],
|
|
42
|
+
['PM-060', C, true, false],
|
|
43
|
+
['PM-061', C, false, false],
|
|
44
|
+
['PM-062', C, false, false],
|
|
45
|
+
['PM-063', C, false, false],
|
|
46
|
+
['PM-070', S, false, false],
|
|
47
|
+
['PM-071', S, false, false],
|
|
48
|
+
['PM-072', S, false, false],
|
|
49
|
+
['PM-073', S, false, false],
|
|
50
|
+
['PM-074', C, false, false],
|
|
51
|
+
['PM-075', C, false, true],
|
|
52
|
+
['PM-076', C, false, true],
|
|
53
|
+
['PM-080', S, false, false],
|
|
54
|
+
['PM-081', S, false, true],
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
describe('clasificación de los momentos', () => {
|
|
58
|
+
it('cubre todo el catálogo', () => {
|
|
59
|
+
expect(EXPECTED.map(([templateId]) => templateId)).toEqual(MESSAGE_MOMENT_CATALOG.map((m) => m.templateId));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it.each(EXPECTED)('%s es %s, collection=%s, manualSend=%s', (templateId, category, collection, manualSend) => {
|
|
63
|
+
const moment = MESSAGE_MOMENT_CATALOG.find((m) => m.templateId === templateId);
|
|
64
|
+
expect(moment).toMatchObject({ category, collection, manualSend });
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('isCollectionMoment responde por messageType y da false a lo que no está en el catálogo', () => {
|
|
68
|
+
expect(isCollectionMoment('COLLECTION_T_PLUS_1')).toBe(true);
|
|
69
|
+
expect(isCollectionMoment('PAYMENT_APPLIED')).toBe(false);
|
|
70
|
+
expect(isCollectionMoment('NOT_A_MOMENT')).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('momentsOfCategory parte el catálogo en dos sin perder ni repetir', () => {
|
|
74
|
+
const sale = momentsOfCategory(S);
|
|
75
|
+
const credit = momentsOfCategory(C);
|
|
76
|
+
expect(sale).toHaveLength(11);
|
|
77
|
+
expect(credit).toHaveLength(29);
|
|
78
|
+
expect(sale.every((m) => m.category === S)).toBe(true);
|
|
79
|
+
expect(credit.every((m) => m.category === C)).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('momentByMessageType encuentra la identidad clasificada', () => {
|
|
83
|
+
expect(momentByMessageType.get('OTP_CODE')?.category).toBe(S);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance, type ClassConstructor } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import {
|
|
5
|
+
type GetCatalogReconciliationResponse,
|
|
6
|
+
type GetOrgReconciliationResponse,
|
|
7
|
+
RECONCILIATION_PREVIEW_MAX_ITEMS,
|
|
8
|
+
type ReconciliationPreview,
|
|
9
|
+
ReconciliationEntityEnum,
|
|
10
|
+
ReconciliationRunStatusEnum,
|
|
11
|
+
ReconciliationTriggerEnum,
|
|
12
|
+
RetailEventRejectCodeEnum,
|
|
13
|
+
type RetailEventResult,
|
|
14
|
+
RetailEventResultEnum,
|
|
15
|
+
StartCatalogReconciliationRequest,
|
|
16
|
+
StartOrgReconciliationRequest,
|
|
17
|
+
} from '../../../src/retailIntegration';
|
|
18
|
+
|
|
19
|
+
function propsWithErrors<T extends object>(cls: ClassConstructor<T>, payload: object): string[] {
|
|
20
|
+
return validateSync(plainToInstance(cls, payload)).map((e) => e.property);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function exposed<T extends object>(cls: ClassConstructor<T>, payload: object): T {
|
|
24
|
+
return plainToInstance(cls, payload, { excludeExtraneousValues: true });
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
describe.each([
|
|
28
|
+
['StartOrgReconciliationRequest', StartOrgReconciliationRequest as ClassConstructor<object>, 'STORES'],
|
|
29
|
+
['StartCatalogReconciliationRequest', StartCatalogReconciliationRequest as ClassConstructor<object>, 'CATALOG'],
|
|
30
|
+
] as const)('%s.dryRun', (_name, cls, entity) => {
|
|
31
|
+
it('es opcional', () => {
|
|
32
|
+
expect(propsWithErrors(cls, { entity })).toEqual([]);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it.each([true, false])('acepta %p', (dryRun) => {
|
|
36
|
+
expect(propsWithErrors(cls, { entity, dryRun })).toEqual([]);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it.each(['true', 1, 'yes'])('rechaza %p', (dryRun) => {
|
|
40
|
+
expect(propsWithErrors(cls, { entity, dryRun })).toContain('dryRun');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('sobrevive a excludeExtraneousValues', () => {
|
|
44
|
+
expect({ ...exposed(cls, { entity, dryRun: true }) }).toMatchObject({ entity, dryRun: true });
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
describe('vista previa de la revisión', () => {
|
|
49
|
+
const counts = { seen: 3, created: 1, updated: 1, deactivated: 1, reactivated: 0, skipped: 0 };
|
|
50
|
+
const preview: ReconciliationPreview = {
|
|
51
|
+
created: [{ id: 's-1', label: 'Tienda Centro' }],
|
|
52
|
+
updated: [{ id: 'SKU-1', label: 'Equipo X', fields: ['price'] }],
|
|
53
|
+
deactivated: [{ id: '356938035643809', storeId: 's-1' }],
|
|
54
|
+
reactivated: [],
|
|
55
|
+
truncated: false,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
it('el tope por lista es 200', () => {
|
|
59
|
+
expect(RECONCILIATION_PREVIEW_MAX_ITEMS).toBe(200);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('las respuestas del GET llevan dryRun y preview', () => {
|
|
63
|
+
const org: GetOrgReconciliationResponse = {
|
|
64
|
+
runId: 'run-1',
|
|
65
|
+
retailerId: 'r-1',
|
|
66
|
+
entity: ReconciliationEntityEnum.STORES,
|
|
67
|
+
status: ReconciliationRunStatusEnum.COMPLETE,
|
|
68
|
+
trigger: ReconciliationTriggerEnum.MANUAL,
|
|
69
|
+
startedAt: '2026-10-27T10:00:00.000Z',
|
|
70
|
+
pagesProcessed: 1,
|
|
71
|
+
counts,
|
|
72
|
+
dryRun: true,
|
|
73
|
+
preview,
|
|
74
|
+
};
|
|
75
|
+
const catalog: GetCatalogReconciliationResponse = { ...org, entity: ReconciliationEntityEnum.INVENTORY };
|
|
76
|
+
expect(org.preview?.updated[0].fields).toEqual(['price']);
|
|
77
|
+
expect(catalog.dryRun).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe('RetailEventResult.errors', () => {
|
|
82
|
+
it('lista todos los renglones malos de un REJECTED', () => {
|
|
83
|
+
const result: RetailEventResult = {
|
|
84
|
+
eventId: 'e-1',
|
|
85
|
+
result: RetailEventResultEnum.REJECTED,
|
|
86
|
+
code: RetailEventRejectCodeEnum.INVALID_IMEI,
|
|
87
|
+
errors: [
|
|
88
|
+
{ index: 0, kind: 'piece', identifier: '123', sku: 'SKU-1', storeId: 's-1', code: RetailEventRejectCodeEnum.INVALID_IMEI },
|
|
89
|
+
{ index: 2, kind: 'stock', sku: 'SKU-2', code: RetailEventRejectCodeEnum.SKU_NOT_STOCKABLE },
|
|
90
|
+
],
|
|
91
|
+
};
|
|
92
|
+
expect(result.errors?.map((e) => e.index)).toEqual([0, 2]);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DeliveryChannelExtendedEnum } from '../../messagesConnector/enums/DeliveryChannelExtendedEnum';
|
|
2
|
+
/** Máximo de mensajes por página del historial del cliente. */
|
|
3
|
+
export declare const CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT = 50;
|
|
4
|
+
/** Id de ficha de un momento: `PM-` y tres dígitos. */
|
|
5
|
+
export declare const MESSAGE_MOMENT_TEMPLATE_ID_PATTERN: RegExp;
|
|
6
|
+
/** Canales por los que el backoffice puede enviar un momento a mano. */
|
|
7
|
+
export declare const CUSTOMER_MANUAL_MESSAGE_CHANNELS: readonly DeliveryChannelExtendedEnum[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CUSTOMER_MANUAL_MESSAGE_CHANNELS = exports.MESSAGE_MOMENT_TEMPLATE_ID_PATTERN = exports.CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT = void 0;
|
|
4
|
+
const DeliveryChannelExtendedEnum_1 = require("../../messagesConnector/enums/DeliveryChannelExtendedEnum");
|
|
5
|
+
/** Máximo de mensajes por página del historial del cliente. */
|
|
6
|
+
exports.CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT = 50;
|
|
7
|
+
/** Id de ficha de un momento: `PM-` y tres dígitos. */
|
|
8
|
+
exports.MESSAGE_MOMENT_TEMPLATE_ID_PATTERN = /^PM-\d{3}$/;
|
|
9
|
+
/** Canales por los que el backoffice puede enviar un momento a mano. */
|
|
10
|
+
exports.CUSTOMER_MANUAL_MESSAGE_CHANNELS = [
|
|
11
|
+
DeliveryChannelExtendedEnum_1.DeliveryChannelExtendedEnum.SMS,
|
|
12
|
+
DeliveryChannelExtendedEnum_1.DeliveryChannelExtendedEnum.PUSH_NOTIFICATION,
|
|
13
|
+
];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DeliveryChannelExtendedEnum } from '../../../messagesConnector/enums/DeliveryChannelExtendedEnum';
|
|
2
|
+
/** Body del envío manual de un momento a un cliente desde el backoffice. */
|
|
3
|
+
export declare class CustomerManualMessageRequest {
|
|
4
|
+
templateId: string;
|
|
5
|
+
channel: DeliveryChannelExtendedEnum;
|
|
6
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CustomerManualMessageRequest = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const DeliveryChannelExtendedEnum_1 = require("../../../messagesConnector/enums/DeliveryChannelExtendedEnum");
|
|
16
|
+
const CustomerMessageLimits_1 = require("../../constants/CustomerMessageLimits");
|
|
17
|
+
/** Body del envío manual de un momento a un cliente desde el backoffice. */
|
|
18
|
+
class CustomerManualMessageRequest {
|
|
19
|
+
}
|
|
20
|
+
exports.CustomerManualMessageRequest = CustomerManualMessageRequest;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_transformer_1.Expose)(),
|
|
23
|
+
(0, class_validator_1.IsString)(),
|
|
24
|
+
(0, class_validator_1.Matches)(CustomerMessageLimits_1.MESSAGE_MOMENT_TEMPLATE_ID_PATTERN),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], CustomerManualMessageRequest.prototype, "templateId", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_transformer_1.Expose)(),
|
|
29
|
+
(0, class_validator_1.IsIn)(CustomerMessageLimits_1.CUSTOMER_MANUAL_MESSAGE_CHANNELS),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], CustomerManualMessageRequest.prototype, "channel", void 0);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MessageMomentCategoryEnum } from '../../../messageMoments/enums/MessageMomentCategoryEnum';
|
|
2
|
+
/** Query del historial de mensajes de un cliente, filtrado por venta o crédito. */
|
|
3
|
+
export declare class CustomerMessageHistoryQuery {
|
|
4
|
+
category: MessageMomentCategoryEnum;
|
|
5
|
+
/** Cursor opaco de la página anterior. */
|
|
6
|
+
cursor?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CustomerMessageHistoryQuery = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const MessageMomentCategoryEnum_1 = require("../../../messageMoments/enums/MessageMomentCategoryEnum");
|
|
16
|
+
const CustomerMessageLimits_1 = require("../../constants/CustomerMessageLimits");
|
|
17
|
+
/** Query del historial de mensajes de un cliente, filtrado por venta o crédito. */
|
|
18
|
+
class CustomerMessageHistoryQuery {
|
|
19
|
+
}
|
|
20
|
+
exports.CustomerMessageHistoryQuery = CustomerMessageHistoryQuery;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_transformer_1.Expose)(),
|
|
23
|
+
(0, class_validator_1.IsEnum)(MessageMomentCategoryEnum_1.MessageMomentCategoryEnum),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], CustomerMessageHistoryQuery.prototype, "category", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
(0, class_validator_1.IsOptional)(),
|
|
29
|
+
(0, class_validator_1.IsString)(),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], CustomerMessageHistoryQuery.prototype, "cursor", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
(0, class_validator_1.IsOptional)(),
|
|
35
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
36
|
+
(0, class_validator_1.IsInt)(),
|
|
37
|
+
(0, class_validator_1.Min)(1),
|
|
38
|
+
(0, class_validator_1.Max)(CustomerMessageLimits_1.CUSTOMER_MESSAGE_HISTORY_MAX_LIMIT),
|
|
39
|
+
__metadata("design:type", Number)
|
|
40
|
+
], CustomerMessageHistoryQuery.prototype, "limit", void 0);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DeliveryChannelExtendedEnum } from '../../../messagesConnector/enums/DeliveryChannelExtendedEnum';
|
|
2
|
+
/** Mensajes de cobranza de un día de tienda en un canal: enviados y bloqueados por el tope. */
|
|
3
|
+
export declare class CollectionQuotaDay {
|
|
4
|
+
/** YYYY-MM-DD en la zona de la tienda. */
|
|
5
|
+
storeDay: string;
|
|
6
|
+
channel: DeliveryChannelExtendedEnum;
|
|
7
|
+
sent: number;
|
|
8
|
+
blocked: number;
|
|
9
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollectionQuotaDay = void 0;
|
|
4
|
+
/** Mensajes de cobranza de un día de tienda en un canal: enviados y bloqueados por el tope. */
|
|
5
|
+
class CollectionQuotaDay {
|
|
6
|
+
}
|
|
7
|
+
exports.CollectionQuotaDay = CollectionQuotaDay;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CollectionQuotaDay } from './CollectionQuotaDay';
|
|
2
|
+
/** Contador diario de cobranza del cliente por canal. */
|
|
3
|
+
export declare class CollectionQuotaResponse {
|
|
4
|
+
maxPerChannel: number;
|
|
5
|
+
/** YYYY-MM-DD del día de tienda actual. */
|
|
6
|
+
today: string;
|
|
7
|
+
days: CollectionQuotaDay[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollectionQuotaResponse = void 0;
|
|
4
|
+
/** Contador diario de cobranza del cliente por canal. */
|
|
5
|
+
class CollectionQuotaResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.CollectionQuotaResponse = CollectionQuotaResponse;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomerManualMessageResponse = void 0;
|
|
4
|
+
/** Respuesta del envío manual: el id del mensaje encolado. */
|
|
5
|
+
class CustomerManualMessageResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.CustomerManualMessageResponse = CustomerManualMessageResponse;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MessageMomentCategoryEnum } from '../../../messageMoments/enums/MessageMomentCategoryEnum';
|
|
2
|
+
import { DeliveryChannelExtendedEnum } from '../../../messagesConnector/enums/DeliveryChannelExtendedEnum';
|
|
3
|
+
import { MessageLogStatusEnum } from '../../../messagesConnector/enums/MessageLogStatusEnum';
|
|
4
|
+
import { NotificationOriginEnum } from '../../../messagesConnector/enums/NotificationOriginEnum';
|
|
5
|
+
/** Un mensaje del historial del cliente, clasificado por su momento. */
|
|
6
|
+
export declare class CustomerMessageHistoryItem {
|
|
7
|
+
messageId: string;
|
|
8
|
+
templateId: string;
|
|
9
|
+
messageType: string;
|
|
10
|
+
category: MessageMomentCategoryEnum;
|
|
11
|
+
collection: boolean;
|
|
12
|
+
channelType: DeliveryChannelExtendedEnum;
|
|
13
|
+
status: MessageLogStatusEnum;
|
|
14
|
+
/** Null cuando el texto no se muestra, como el OTP. */
|
|
15
|
+
renderedMessage: string | null;
|
|
16
|
+
origin: NotificationOriginEnum;
|
|
17
|
+
/** ISO 8601. */
|
|
18
|
+
createdAt: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomerMessageHistoryItem = void 0;
|
|
4
|
+
/** Un mensaje del historial del cliente, clasificado por su momento. */
|
|
5
|
+
class CustomerMessageHistoryItem {
|
|
6
|
+
}
|
|
7
|
+
exports.CustomerMessageHistoryItem = CustomerMessageHistoryItem;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CustomerMessageHistoryItem } from './CustomerMessageHistoryItem';
|
|
2
|
+
/** Página del historial del cliente, del más nuevo al más viejo. `nextCursor` en null: no hay más. */
|
|
3
|
+
export declare class CustomerMessageHistoryResponse {
|
|
4
|
+
/** False si el cliente no tiene cuenta Fiado; entonces `items` viene vacío. */
|
|
5
|
+
hasFiadoAccount: boolean;
|
|
6
|
+
items: CustomerMessageHistoryItem[];
|
|
7
|
+
nextCursor: string | null;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomerMessageHistoryResponse = void 0;
|
|
4
|
+
/** Página del historial del cliente, del más nuevo al más viejo. `nextCursor` en null: no hay más. */
|
|
5
|
+
class CustomerMessageHistoryResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.CustomerMessageHistoryResponse = CustomerMessageHistoryResponse;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './constants/CustomerMessageLimits';
|
|
2
|
+
export * from './dtos/requests/CustomerMessageHistoryQuery';
|
|
3
|
+
export * from './dtos/requests/CustomerManualMessageRequest';
|
|
4
|
+
export * from './dtos/responses/CustomerMessageHistoryItem';
|
|
5
|
+
export * from './dtos/responses/CustomerMessageHistoryResponse';
|
|
6
|
+
export * from './dtos/responses/CollectionQuotaDay';
|
|
7
|
+
export * from './dtos/responses/CollectionQuotaResponse';
|
|
8
|
+
export * from './dtos/responses/CustomerManualMessageResponse';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants/CustomerMessageLimits"), exports);
|
|
18
|
+
__exportStar(require("./dtos/requests/CustomerMessageHistoryQuery"), exports);
|
|
19
|
+
__exportStar(require("./dtos/requests/CustomerManualMessageRequest"), exports);
|
|
20
|
+
__exportStar(require("./dtos/responses/CustomerMessageHistoryItem"), exports);
|
|
21
|
+
__exportStar(require("./dtos/responses/CustomerMessageHistoryResponse"), exports);
|
|
22
|
+
__exportStar(require("./dtos/responses/CollectionQuotaDay"), exports);
|
|
23
|
+
__exportStar(require("./dtos/responses/CollectionQuotaResponse"), exports);
|
|
24
|
+
__exportStar(require("./dtos/responses/CustomerManualMessageResponse"), exports);
|
package/bin/index.d.ts
CHANGED
package/bin/index.js
CHANGED
|
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.FiadoIncFavorite = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.MessageMoments = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Biometrics = exports.MetamapConnector = exports.Account = exports.Crypto = void 0;
|
|
40
40
|
exports.RetailCards = exports.RetailCatalog = exports.RetailCommission = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.WhatsappConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.UsMarketGrowthBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = void 0;
|
|
41
|
-
exports.TaskManager = exports.LoanRetailAudit = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
41
|
+
exports.CustomerMessages = exports.TaskManager = exports.LoanRetailAudit = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
42
42
|
exports.Crypto = __importStar(require("./crypto"));
|
|
43
43
|
exports.Account = __importStar(require("./account"));
|
|
44
44
|
exports.MetamapConnector = __importStar(require("./metamapConnector"));
|
|
@@ -257,3 +257,5 @@ exports.Rules = __importStar(require("./rules"));
|
|
|
257
257
|
exports.LoanRetailAudit = __importStar(require("./loanRetailAudit"));
|
|
258
258
|
// TaskManager: DTOs del lambda task-manager-business (gestor genérico de tareas; primer tipo MARKETING_MATERIAL).
|
|
259
259
|
exports.TaskManager = __importStar(require("./task-manager-business"));
|
|
260
|
+
// CustomerMessages: historial de mensajes del cliente por venta o crédito, contador de cobranza y envío manual.
|
|
261
|
+
exports.CustomerMessages = __importStar(require("./customerMessages"));
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MessageMomentEnum } from '../enums/MessageMomentEnum';
|
|
2
2
|
import { MessageMomentBlockEnum } from '../enums/MessageMomentBlockEnum';
|
|
3
|
+
import { MessageMomentCategoryEnum } from '../enums/MessageMomentCategoryEnum';
|
|
3
4
|
/** Quién es un momento: su id de ficha, su plantilla, su bloque y las variables que emite. */
|
|
4
5
|
export interface MessageMomentIdentity {
|
|
5
6
|
/** Id del momento (`PM-001`); en minúsculas es el prefijo de sus keys en la ficha. */
|
|
@@ -9,6 +10,12 @@ export interface MessageMomentIdentity {
|
|
|
9
10
|
blockId: MessageMomentBlockEnum;
|
|
10
11
|
alwaysVariables: readonly string[];
|
|
11
12
|
conditionalVariables: readonly string[];
|
|
13
|
+
/** Historial del cliente donde aparece: venta o crédito. */
|
|
14
|
+
category: MessageMomentCategoryEnum;
|
|
15
|
+
/** Es cobranza: cuenta contra el tope diario por canal. */
|
|
16
|
+
collection: boolean;
|
|
17
|
+
/** El backoffice lo puede enviar a mano. */
|
|
18
|
+
manualSend: boolean;
|
|
12
19
|
}
|
|
13
20
|
/** Los 38 momentos del crédito EN ORDEN de recorrido y al final los de referidos. `PM-071` apunta al OTP de plataforma. */
|
|
14
21
|
export declare const MESSAGE_MOMENT_CATALOG: readonly MessageMomentIdentity[];
|
|
@@ -16,3 +23,7 @@ export declare const MESSAGE_MOMENT_CATALOG: readonly MessageMomentIdentity[];
|
|
|
16
23
|
export declare const momentByTemplateId: ReadonlyMap<string, MessageMomentIdentity>;
|
|
17
24
|
/** La identidad por messageType de la plantilla. */
|
|
18
25
|
export declare const momentByMessageType: ReadonlyMap<string, MessageMomentIdentity>;
|
|
26
|
+
/** Si el messageType es de cobranza; false para lo que no está en el catálogo. */
|
|
27
|
+
export declare function isCollectionMoment(messageType: string): boolean;
|
|
28
|
+
/** Los momentos de una categoría, en el orden del catálogo. */
|
|
29
|
+
export declare function momentsOfCategory(category: MessageMomentCategoryEnum): readonly MessageMomentIdentity[];
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.momentByMessageType = exports.momentByTemplateId = exports.MESSAGE_MOMENT_CATALOG = void 0;
|
|
4
|
+
exports.isCollectionMoment = isCollectionMoment;
|
|
5
|
+
exports.momentsOfCategory = momentsOfCategory;
|
|
4
6
|
const MessageMomentEnum_1 = require("../enums/MessageMomentEnum");
|
|
5
7
|
const MessageMomentBlockEnum_1 = require("../enums/MessageMomentBlockEnum");
|
|
8
|
+
const MessageMomentClassification_1 = require("./MessageMomentClassification");
|
|
6
9
|
const MessageMomentVariables_1 = require("./MessageMomentVariables");
|
|
7
10
|
/** Un momento del crédito: las variables del crédito más las que solo emite él. */
|
|
8
11
|
function creditMoment(templateId, messageType, blockId) {
|
|
@@ -12,11 +15,12 @@ function creditMoment(templateId, messageType, blockId) {
|
|
|
12
15
|
blockId,
|
|
13
16
|
alwaysVariables: [...MessageMomentVariables_1.CREDIT_MOMENT_ALWAYS_VARIABLES, ...(MessageMomentVariables_1.MOMENT_SPECIFIC_VARIABLES[messageType] ?? [])],
|
|
14
17
|
conditionalVariables: MessageMomentVariables_1.CREDIT_MOMENT_CONDITIONAL_VARIABLES,
|
|
18
|
+
...(0, MessageMomentClassification_1.classifyMoment)(messageType, blockId),
|
|
15
19
|
};
|
|
16
20
|
}
|
|
17
21
|
/** Un momento fuera del crédito: solo las variables que su emisor manda. */
|
|
18
22
|
function standaloneMoment(templateId, messageType, blockId, alwaysVariables, conditionalVariables = []) {
|
|
19
|
-
return { templateId, messageType, blockId, alwaysVariables, conditionalVariables };
|
|
23
|
+
return { templateId, messageType, blockId, alwaysVariables, conditionalVariables, ...(0, MessageMomentClassification_1.classifyMoment)(messageType, blockId) };
|
|
20
24
|
}
|
|
21
25
|
const B = MessageMomentBlockEnum_1.MessageMomentBlockEnum;
|
|
22
26
|
const M = MessageMomentEnum_1.MessageMomentEnum;
|
|
@@ -67,3 +71,11 @@ exports.MESSAGE_MOMENT_CATALOG = [
|
|
|
67
71
|
exports.momentByTemplateId = new Map(exports.MESSAGE_MOMENT_CATALOG.map((moment) => [moment.templateId, moment]));
|
|
68
72
|
/** La identidad por messageType de la plantilla. */
|
|
69
73
|
exports.momentByMessageType = new Map(exports.MESSAGE_MOMENT_CATALOG.map((moment) => [moment.messageType, moment]));
|
|
74
|
+
/** Si el messageType es de cobranza; false para lo que no está en el catálogo. */
|
|
75
|
+
function isCollectionMoment(messageType) {
|
|
76
|
+
return exports.momentByMessageType.get(messageType)?.collection ?? false;
|
|
77
|
+
}
|
|
78
|
+
/** Los momentos de una categoría, en el orden del catálogo. */
|
|
79
|
+
function momentsOfCategory(category) {
|
|
80
|
+
return exports.MESSAGE_MOMENT_CATALOG.filter((moment) => moment.category === category);
|
|
81
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MessageMomentBlockEnum } from '../enums/MessageMomentBlockEnum';
|
|
2
|
+
import { MessageMomentCategoryEnum } from '../enums/MessageMomentCategoryEnum';
|
|
3
|
+
import { MessageMomentEnum } from '../enums/MessageMomentEnum';
|
|
4
|
+
/** Categoría por defecto de cada bloque; un momento nuevo la hereda. */
|
|
5
|
+
export declare const BLOCK_DEFAULT_CATEGORY: Readonly<Record<MessageMomentBlockEnum, MessageMomentCategoryEnum>>;
|
|
6
|
+
/** Momentos del bloque de servicio que van al historial del crédito. */
|
|
7
|
+
export declare const CREDIT_CATEGORY_OVERRIDES: ReadonlySet<MessageMomentEnum>;
|
|
8
|
+
/** Bloques cuyos momentos son de cobranza y cuentan contra el tope diario. */
|
|
9
|
+
export declare const COLLECTION_BLOCKS: ReadonlySet<MessageMomentBlockEnum>;
|
|
10
|
+
/** Momentos de cobranza fuera de esos bloques. */
|
|
11
|
+
export declare const COLLECTION_MOMENT_OVERRIDES: ReadonlySet<MessageMomentEnum>;
|
|
12
|
+
/** Momentos que el backoffice puede enviar a mano a un cliente. */
|
|
13
|
+
export declare const MANUAL_SEND_MOMENTS: ReadonlySet<MessageMomentEnum>;
|
|
14
|
+
/** Clasificación de un momento: la de su bloque, salvo que esté en una lista de excepciones. */
|
|
15
|
+
export declare function classifyMoment(messageType: MessageMomentEnum, blockId: MessageMomentBlockEnum): {
|
|
16
|
+
category: MessageMomentCategoryEnum;
|
|
17
|
+
collection: boolean;
|
|
18
|
+
manualSend: boolean;
|
|
19
|
+
};
|