@fiado/type-kit 3.404.0 → 3.406.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/loanCredit/dtos/loanDeviceContract.test.ts +40 -0
- package/_test_/unit/mdm/dtos/mdmDeviceContract.test.ts +60 -0
- package/bin/loanCredit/dtos/LoanDeviceNotifyItem.d.ts +13 -2
- package/bin/loanCredit/dtos/LoanDeviceNotifyItem.js +10 -2
- package/bin/loanCredit/index.d.ts +1 -0
- package/bin/loanCredit/index.js +3 -1
- package/bin/mdm/dtos/DeviceNotifyRequest.d.ts +8 -11
- package/bin/mdm/dtos/DeviceNotifyRequest.js +7 -0
- package/bin/mdm/enums/MdmErrorCodeEnum.d.ts +3 -1
- package/bin/mdm/enums/MdmErrorCodeEnum.js +3 -1
- package/bin/mdm/enums/MdmNoticeTypeEnum.d.ts +27 -0
- package/bin/mdm/enums/MdmNoticeTypeEnum.js +31 -0
- package/bin/mdm/index.d.ts +1 -0
- package/bin/mdm/index.js +1 -0
- package/bin/remittance/dtos/RemittancePayerConfig.d.ts +38 -0
- package/bin/remittance/dtos/RemittancePayerConfig.js +45 -0
- package/bin/remittance/dtos/index.d.ts +1 -0
- package/bin/remittance/dtos/index.js +1 -0
- package/bin/remittance/enums/AuditEntityType.d.ts +1 -0
- package/bin/remittance/enums/AuditEntityType.js +1 -0
- package/package.json +1 -1
- package/src/loanCredit/dtos/LoanDeviceNotifyItem.ts +18 -3
- package/src/loanCredit/index.ts +1 -0
- package/src/mdm/dtos/DeviceNotifyRequest.ts +13 -12
- package/src/mdm/enums/MdmErrorCodeEnum.ts +3 -1
- package/src/mdm/enums/MdmNoticeTypeEnum.ts +27 -0
- package/src/mdm/index.ts +1 -0
- package/src/remittance/dtos/RemittancePayerConfig.ts +50 -0
- package/src/remittance/dtos/index.ts +1 -0
- package/src/remittance/enums/AuditEntityType.ts +1 -0
|
@@ -16,9 +16,11 @@ import { LoanDeviceReleaseResult } from '../../../../src/loanCredit/dtos/respons
|
|
|
16
16
|
import { LoanDeviceLockReasonEnum } from '../../../../src/loanCredit/enums/LoanDeviceLockReasonEnum';
|
|
17
17
|
import { LoanDeviceMdmStatusEnum } from '../../../../src/loanCredit/enums/LoanDeviceMdmStatusEnum';
|
|
18
18
|
import { DeviceNotifyIntensityEnum } from '../../../../src/mdm/enums/DeviceNotifyIntensityEnum';
|
|
19
|
+
import { MdmNoticeTypeEnum } from '../../../../src/mdm/enums/MdmNoticeTypeEnum';
|
|
19
20
|
import { DeviceReleaseReasonEnum } from '../../../../src/mdm/enums/DeviceReleaseReasonEnum';
|
|
20
21
|
import { MdmOperationStatusEnum } from '../../../../src/mdm/enums/MdmOperationStatusEnum';
|
|
21
22
|
import { LOAN_DEVICE_MAX_BATCH } from '../../../../src/loanCredit/constants/LoanDeviceBatchLimits';
|
|
23
|
+
import * as LoanCreditBarrel from '../../../../src/loanCredit/index';
|
|
22
24
|
|
|
23
25
|
/** ULIDs reales del motor: así es como `LoanCreditService` genera los creditId. */
|
|
24
26
|
const CREDIT_ID = '01M0B5D7FQA3T06K4REEVPRM33';
|
|
@@ -470,6 +472,32 @@ describe('LoanDeviceNotifyRequest', () => {
|
|
|
470
472
|
const errors = await validate(dto);
|
|
471
473
|
expect(errors.some(e => e.property === 'operationReference')).toBe(true);
|
|
472
474
|
});
|
|
475
|
+
|
|
476
|
+
describe('noticeType', () => {
|
|
477
|
+
it('valida sin noticeType: el consumidor de hoy no se rompe', async () => {
|
|
478
|
+
const dto = plainToInstance(LoanDeviceNotifyRequest, validNotify);
|
|
479
|
+
const errors = await validate(dto);
|
|
480
|
+
expect(errors).toEqual([]);
|
|
481
|
+
expect(dto.items[0].noticeType).toBeUndefined();
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
it.each(Object.values(MdmNoticeTypeEnum))('valida con noticeType %s', async noticeType => {
|
|
485
|
+
const items = [{ ...validNotifyItem, noticeType }];
|
|
486
|
+
const dto = plainToInstance(LoanDeviceNotifyRequest, notifyWithItems(items));
|
|
487
|
+
const errors = await validate(dto);
|
|
488
|
+
expect(errors).toEqual([]);
|
|
489
|
+
expect(dto.items[0].noticeType).toBe(noticeType);
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
it('falla si noticeType está fuera del enum', async () => {
|
|
493
|
+
const items = [{ ...validNotifyItem, noticeType: 'RECORDATORIO' }];
|
|
494
|
+
const dto = plainToInstance(LoanDeviceNotifyRequest, notifyWithItems(items));
|
|
495
|
+
const errors = await validate(dto);
|
|
496
|
+
const itemsError = errors.find(e => e.property === 'items');
|
|
497
|
+
expect(itemsError).toBeDefined();
|
|
498
|
+
expect(JSON.stringify(itemsError)).toContain('noticeType');
|
|
499
|
+
});
|
|
500
|
+
});
|
|
473
501
|
});
|
|
474
502
|
|
|
475
503
|
describe('LoanDeviceReleaseRequest', () => {
|
|
@@ -699,3 +727,15 @@ describe('responses de notify y release', () => {
|
|
|
699
727
|
expect(failed.releasedAt).toBeUndefined();
|
|
700
728
|
});
|
|
701
729
|
});
|
|
730
|
+
|
|
731
|
+
describe('barrel de loanCredit', () => {
|
|
732
|
+
it('reexporta los enums canónicos de mdm sin duplicarlos', () => {
|
|
733
|
+
expect(LoanCreditBarrel.DeviceNotifyIntensityEnum).toBe(DeviceNotifyIntensityEnum);
|
|
734
|
+
expect(LoanCreditBarrel.DeviceReleaseReasonEnum).toBe(DeviceReleaseReasonEnum);
|
|
735
|
+
expect(LoanCreditBarrel.MdmOperationStatusEnum).toBe(MdmOperationStatusEnum);
|
|
736
|
+
});
|
|
737
|
+
|
|
738
|
+
it('exporta MdmNoticeTypeEnum: quien construye el ítem de aviso puede nombrar el valor', () => {
|
|
739
|
+
expect(LoanCreditBarrel.MdmNoticeTypeEnum).toBe(MdmNoticeTypeEnum);
|
|
740
|
+
});
|
|
741
|
+
});
|
|
@@ -2,8 +2,11 @@ import 'reflect-metadata';
|
|
|
2
2
|
import { plainToInstance } from 'class-transformer';
|
|
3
3
|
import { validate, ValidationError } from 'class-validator';
|
|
4
4
|
import { DeviceEnrollRequest } from '../../../../src/mdm/dtos/DeviceEnrollRequest';
|
|
5
|
+
import { DeviceNotifyRequest } from '../../../../src/mdm/dtos/DeviceNotifyRequest';
|
|
5
6
|
import { DeviceUnlockRequest } from '../../../../src/mdm/dtos/DeviceUnlockRequest';
|
|
7
|
+
import { DeviceNotifyIntensityEnum } from '../../../../src/mdm/enums/DeviceNotifyIntensityEnum';
|
|
6
8
|
import { MdmErrorCodeEnum } from '../../../../src/mdm/enums/MdmErrorCodeEnum';
|
|
9
|
+
import { MdmNoticeTypeEnum } from '../../../../src/mdm/enums/MdmNoticeTypeEnum';
|
|
7
10
|
import * as MdmBarrel from '../../../../src/mdm/index';
|
|
8
11
|
import { MdmLockModeEnum } from '../../../../src/retailCatalog/enums/MdmLockModeEnum';
|
|
9
12
|
|
|
@@ -27,6 +30,16 @@ const validUnlock = {
|
|
|
27
30
|
operationReference: 'unlock-2026-09-01-0001',
|
|
28
31
|
};
|
|
29
32
|
|
|
33
|
+
/** Aviso tal como lo manda hoy un connector ya desplegado: los tres campos legacy, sin `noticeType`. */
|
|
34
|
+
const validNotify = {
|
|
35
|
+
imei: '351756051523999',
|
|
36
|
+
intensity: DeviceNotifyIntensityEnum.BANNER,
|
|
37
|
+
notificationCode: 'PAYMENT_REMINDER_D1',
|
|
38
|
+
title: 'Tu pago está pendiente',
|
|
39
|
+
content: 'Ponte al corriente para seguir usando tu equipo.',
|
|
40
|
+
operationReference: 'notify-2026-09-04-0001',
|
|
41
|
+
};
|
|
42
|
+
|
|
30
43
|
describe('DeviceEnrollRequest.lockMode', () => {
|
|
31
44
|
it('valida sin lockMode: el consumidor de hoy no se rompe', async () => {
|
|
32
45
|
const dto = plainToInstance(DeviceEnrollRequest, validEnroll);
|
|
@@ -81,8 +94,55 @@ describe('MdmErrorCodeEnum', () => {
|
|
|
81
94
|
});
|
|
82
95
|
});
|
|
83
96
|
|
|
97
|
+
describe('DeviceNotifyRequest.noticeType', () => {
|
|
98
|
+
it('valida sin noticeType: el consumidor de hoy no se rompe', async () => {
|
|
99
|
+
const dto = plainToInstance(DeviceNotifyRequest, validNotify);
|
|
100
|
+
const errors = await validate(dto);
|
|
101
|
+
expect(errors).toEqual([]);
|
|
102
|
+
expect(dto.noticeType).toBeUndefined();
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it.each(Object.values(MdmNoticeTypeEnum))('valida con noticeType %s', async noticeType => {
|
|
106
|
+
const dto = plainToInstance(DeviceNotifyRequest, { ...validNotify, noticeType });
|
|
107
|
+
const errors = await validate(dto);
|
|
108
|
+
expect(errors).toEqual([]);
|
|
109
|
+
expect(dto.noticeType).toBe(noticeType);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('falla si noticeType está fuera del enum', async () => {
|
|
113
|
+
const dto = plainToInstance(DeviceNotifyRequest, { ...validNotify, noticeType: 'RECORDATORIO' });
|
|
114
|
+
const errors = await validate(dto);
|
|
115
|
+
expect(hasConstraint(errors, 'noticeType', 'isEnum')).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe('MdmNoticeTypeEnum', () => {
|
|
120
|
+
it('expone los diez avisos del catálogo de cobranza', () => {
|
|
121
|
+
expect(Object.values(MdmNoticeTypeEnum)).toEqual([
|
|
122
|
+
'PRE_DUE_2_DAYS',
|
|
123
|
+
'PRE_DUE_1_DAY',
|
|
124
|
+
'DUE_TODAY',
|
|
125
|
+
'OVERDUE_1_DAY',
|
|
126
|
+
'OVERDUE_3_DAYS',
|
|
127
|
+
'OVERDUE_7_DAYS',
|
|
128
|
+
'OVERDUE_14_DAYS',
|
|
129
|
+
'OVERDUE_25_DAYS',
|
|
130
|
+
'OVERDUE_30_DAYS',
|
|
131
|
+
'OVERDUE_60_DAYS',
|
|
132
|
+
]);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('usa el nombre como valor, igual que el resto de los enums del dominio', () => {
|
|
136
|
+
Object.entries(MdmNoticeTypeEnum).forEach(([name, value]) => expect(value).toBe(name));
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
84
140
|
describe('barrel de mdm', () => {
|
|
85
141
|
it('reexporta MdmLockModeEnum sin duplicar el enum de retailCatalog', () => {
|
|
86
142
|
expect(MdmBarrel.MdmLockModeEnum).toBe(MdmLockModeEnum);
|
|
87
143
|
});
|
|
144
|
+
|
|
145
|
+
it('exporta MdmNoticeTypeEnum', () => {
|
|
146
|
+
expect(MdmBarrel.MdmNoticeTypeEnum).toBe(MdmNoticeTypeEnum);
|
|
147
|
+
});
|
|
88
148
|
});
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import { DeviceNotifyIntensityEnum } from '../../mdm/enums/DeviceNotifyIntensityEnum';
|
|
2
|
+
import { MdmNoticeTypeEnum } from '../../mdm/enums/MdmNoticeTypeEnum';
|
|
2
3
|
/**
|
|
3
|
-
* Ítem de notificación: a qué crédito se le avisa y con qué
|
|
4
|
-
*
|
|
4
|
+
* Ítem de notificación: a qué crédito se le avisa y con qué aviso.
|
|
5
|
+
* El aviso viaja como `noticeType`; los tres campos de texto siguen siendo obligatorios porque
|
|
6
|
+
* Datacultr usa el código del catálogo y Trustonic el texto crudo.
|
|
5
7
|
*/
|
|
6
8
|
export declare class LoanDeviceNotifyItem {
|
|
7
9
|
creditId: string;
|
|
8
10
|
intensity: DeviceNotifyIntensityEnum;
|
|
11
|
+
/**
|
|
12
|
+
* Id agnóstico del aviso; cada connector lo traduce a lo que su proveedor entiende.
|
|
13
|
+
* Los connectors lo van a preferir sobre `notificationCode`/`title`/`content`;
|
|
14
|
+
* hasta entonces esos tres siguen siendo la fuente.
|
|
15
|
+
*/
|
|
16
|
+
noticeType?: MdmNoticeTypeEnum;
|
|
17
|
+
/** Código de notificación del catálogo de Datacultr. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
9
18
|
notificationCode: string;
|
|
19
|
+
/** Título crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
10
20
|
title: string;
|
|
21
|
+
/** Cuerpo crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
11
22
|
content: string;
|
|
12
23
|
}
|
|
@@ -13,10 +13,12 @@ exports.LoanDeviceNotifyItem = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const DeviceNotifyIntensityEnum_1 = require("../../mdm/enums/DeviceNotifyIntensityEnum");
|
|
16
|
+
const MdmNoticeTypeEnum_1 = require("../../mdm/enums/MdmNoticeTypeEnum");
|
|
16
17
|
const CreditIdPattern_1 = require("../constants/CreditIdPattern");
|
|
17
18
|
/**
|
|
18
|
-
* Ítem de notificación: a qué crédito se le avisa y con qué
|
|
19
|
-
*
|
|
19
|
+
* Ítem de notificación: a qué crédito se le avisa y con qué aviso.
|
|
20
|
+
* El aviso viaja como `noticeType`; los tres campos de texto siguen siendo obligatorios porque
|
|
21
|
+
* Datacultr usa el código del catálogo y Trustonic el texto crudo.
|
|
20
22
|
*/
|
|
21
23
|
class LoanDeviceNotifyItem {
|
|
22
24
|
}
|
|
@@ -31,6 +33,12 @@ __decorate([
|
|
|
31
33
|
(0, class_validator_1.IsEnum)(DeviceNotifyIntensityEnum_1.DeviceNotifyIntensityEnum),
|
|
32
34
|
__metadata("design:type", String)
|
|
33
35
|
], LoanDeviceNotifyItem.prototype, "intensity", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsEnum)(MdmNoticeTypeEnum_1.MdmNoticeTypeEnum),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], LoanDeviceNotifyItem.prototype, "noticeType", void 0);
|
|
34
42
|
__decorate([
|
|
35
43
|
(0, class_transformer_1.Expose)(),
|
|
36
44
|
(0, class_validator_1.IsString)(),
|
|
@@ -34,6 +34,7 @@ export { MdmOperationTypeEnum } from '../mdm/enums/MdmOperationTypeEnum';
|
|
|
34
34
|
export { MdmProviderEnum } from '../mdm/enums/MdmProviderEnum';
|
|
35
35
|
export { DeviceEnrollmentModeEnum } from '../mdm/enums/DeviceEnrollmentModeEnum';
|
|
36
36
|
export { DeviceNotifyIntensityEnum } from '../mdm/enums/DeviceNotifyIntensityEnum';
|
|
37
|
+
export { MdmNoticeTypeEnum } from '../mdm/enums/MdmNoticeTypeEnum';
|
|
37
38
|
export { DeviceReleaseReasonEnum } from '../mdm/enums/DeviceReleaseReasonEnum';
|
|
38
39
|
export { MdmError } from '../mdm/dtos/MdmError';
|
|
39
40
|
export { DeviceLockScreenMessage } from '../mdm/dtos/DeviceLockScreenMessage';
|
package/bin/loanCredit/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.MdmLockModeEnum = exports.DeviceLockScreenMessage = exports.MdmError = exports.DeviceReleaseReasonEnum = exports.DeviceNotifyIntensityEnum = exports.DeviceEnrollmentModeEnum = exports.MdmProviderEnum = exports.MdmOperationTypeEnum = exports.MdmDeviceStatusEnum = exports.MdmOperationStatusEnum = exports.ClientLevelEnum = void 0;
|
|
17
|
+
exports.MdmLockModeEnum = exports.DeviceLockScreenMessage = exports.MdmError = exports.DeviceReleaseReasonEnum = exports.MdmNoticeTypeEnum = exports.DeviceNotifyIntensityEnum = exports.DeviceEnrollmentModeEnum = exports.MdmProviderEnum = exports.MdmOperationTypeEnum = exports.MdmDeviceStatusEnum = exports.MdmOperationStatusEnum = exports.ClientLevelEnum = void 0;
|
|
18
18
|
// Enums
|
|
19
19
|
__exportStar(require("./enums/LoanCreditStatusEnum"), exports);
|
|
20
20
|
__exportStar(require("./enums/LoanInstallmentStatusEnum"), exports);
|
|
@@ -65,6 +65,8 @@ var DeviceEnrollmentModeEnum_1 = require("../mdm/enums/DeviceEnrollmentModeEnum"
|
|
|
65
65
|
Object.defineProperty(exports, "DeviceEnrollmentModeEnum", { enumerable: true, get: function () { return DeviceEnrollmentModeEnum_1.DeviceEnrollmentModeEnum; } });
|
|
66
66
|
var DeviceNotifyIntensityEnum_1 = require("../mdm/enums/DeviceNotifyIntensityEnum");
|
|
67
67
|
Object.defineProperty(exports, "DeviceNotifyIntensityEnum", { enumerable: true, get: function () { return DeviceNotifyIntensityEnum_1.DeviceNotifyIntensityEnum; } });
|
|
68
|
+
var MdmNoticeTypeEnum_1 = require("../mdm/enums/MdmNoticeTypeEnum");
|
|
69
|
+
Object.defineProperty(exports, "MdmNoticeTypeEnum", { enumerable: true, get: function () { return MdmNoticeTypeEnum_1.MdmNoticeTypeEnum; } });
|
|
68
70
|
var DeviceReleaseReasonEnum_1 = require("../mdm/enums/DeviceReleaseReasonEnum");
|
|
69
71
|
Object.defineProperty(exports, "DeviceReleaseReasonEnum", { enumerable: true, get: function () { return DeviceReleaseReasonEnum_1.DeviceReleaseReasonEnum; } });
|
|
70
72
|
var MdmError_1 = require("../mdm/dtos/MdmError");
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { DeviceNotifyIntensityEnum } from "../enums/DeviceNotifyIntensityEnum";
|
|
2
|
+
import { MdmNoticeTypeEnum } from "../enums/MdmNoticeTypeEnum";
|
|
2
3
|
export declare class DeviceNotifyRequest {
|
|
3
4
|
imei: string;
|
|
4
5
|
intensity: DeviceNotifyIntensityEnum;
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Id agnóstico del aviso; cada connector lo traduce a lo que su proveedor entiende.
|
|
8
|
+
* Los connectors lo van a preferir sobre `notificationCode`/`title`/`content`;
|
|
9
|
+
* hasta entonces esos tres siguen siendo la fuente.
|
|
9
10
|
*/
|
|
11
|
+
noticeType?: MdmNoticeTypeEnum;
|
|
12
|
+
/** Código de notificación del catálogo de Datacultr. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
10
13
|
notificationCode: string;
|
|
11
|
-
/**
|
|
12
|
-
* Título de la notificación. Usado por Trustonic (`notificationTitle`). Datacultr lo
|
|
13
|
-
* ignora — el texto del título vive en su catálogo indexado por `notificationCode`.
|
|
14
|
-
*/
|
|
14
|
+
/** Título crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
15
15
|
title: string;
|
|
16
|
-
/**
|
|
17
|
-
* Cuerpo de la notificación. Usado por Trustonic (`notificationContent`). Datacultr lo
|
|
18
|
-
* ignora.
|
|
19
|
-
*/
|
|
16
|
+
/** Cuerpo crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
20
17
|
content: string;
|
|
21
18
|
operationReference: string;
|
|
22
19
|
}
|
|
@@ -13,6 +13,7 @@ exports.DeviceNotifyRequest = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const DeviceNotifyIntensityEnum_1 = require("../enums/DeviceNotifyIntensityEnum");
|
|
16
|
+
const MdmNoticeTypeEnum_1 = require("../enums/MdmNoticeTypeEnum");
|
|
16
17
|
class DeviceNotifyRequest {
|
|
17
18
|
}
|
|
18
19
|
exports.DeviceNotifyRequest = DeviceNotifyRequest;
|
|
@@ -27,6 +28,12 @@ __decorate([
|
|
|
27
28
|
(0, class_validator_1.IsEnum)(DeviceNotifyIntensityEnum_1.DeviceNotifyIntensityEnum),
|
|
28
29
|
__metadata("design:type", String)
|
|
29
30
|
], DeviceNotifyRequest.prototype, "intensity", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.IsEnum)(MdmNoticeTypeEnum_1.MdmNoticeTypeEnum),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], DeviceNotifyRequest.prototype, "noticeType", void 0);
|
|
30
37
|
__decorate([
|
|
31
38
|
(0, class_transformer_1.Expose)(),
|
|
32
39
|
(0, class_validator_1.IsString)(),
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare enum MdmErrorCodeEnum {
|
|
2
|
-
/** El proveedor no
|
|
2
|
+
/** El proveedor no tiene la operación: no depende de cómo se enroló el equipo. */
|
|
3
3
|
PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
|
|
4
|
+
/** El proveedor la tiene, pero ESTE equipo no la admite por cómo se enroló. No es terminal. */
|
|
5
|
+
DEVICE_CAPABILITY_NOT_SUPPORTED = "DEVICE_CAPABILITY_NOT_SUPPORTED",
|
|
4
6
|
/** No hay connector cableado para ese proveedor: reintentar nunca lo resuelve. */
|
|
5
7
|
CONNECTOR_NOT_WIRED = "CONNECTOR_NOT_WIRED",
|
|
6
8
|
DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND",
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MdmErrorCodeEnum = void 0;
|
|
4
4
|
var MdmErrorCodeEnum;
|
|
5
5
|
(function (MdmErrorCodeEnum) {
|
|
6
|
-
/** El proveedor no
|
|
6
|
+
/** El proveedor no tiene la operación: no depende de cómo se enroló el equipo. */
|
|
7
7
|
MdmErrorCodeEnum["PROVIDER_NOT_SUPPORTED"] = "PROVIDER_NOT_SUPPORTED";
|
|
8
|
+
/** El proveedor la tiene, pero ESTE equipo no la admite por cómo se enroló. No es terminal. */
|
|
9
|
+
MdmErrorCodeEnum["DEVICE_CAPABILITY_NOT_SUPPORTED"] = "DEVICE_CAPABILITY_NOT_SUPPORTED";
|
|
8
10
|
/** No hay connector cableado para ese proveedor: reintentar nunca lo resuelve. */
|
|
9
11
|
MdmErrorCodeEnum["CONNECTOR_NOT_WIRED"] = "CONNECTOR_NOT_WIRED";
|
|
10
12
|
MdmErrorCodeEnum["DEVICE_NOT_FOUND"] = "DEVICE_NOT_FOUND";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catálogo agnóstico de avisos automáticos de cobranza que se muestran en la pantalla del equipo.
|
|
3
|
+
* Cada connector traduce el valor a lo que su proveedor entiende (código de catálogo o texto crudo).
|
|
4
|
+
* No es la cadencia completa de cobranza: los hitos de otros canales (tarde del día 0, días 90 y 180) no se pintan acá.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum MdmNoticeTypeEnum {
|
|
7
|
+
/** Dos días antes del vencimiento de la cuota. */
|
|
8
|
+
PRE_DUE_2_DAYS = "PRE_DUE_2_DAYS",
|
|
9
|
+
/** Un día antes del vencimiento de la cuota. */
|
|
10
|
+
PRE_DUE_1_DAY = "PRE_DUE_1_DAY",
|
|
11
|
+
/** El día del vencimiento, mientras la cuota todavía no cae en mora. */
|
|
12
|
+
DUE_TODAY = "DUE_TODAY",
|
|
13
|
+
/** Día 1 de mora: el equipo ya está bloqueado. */
|
|
14
|
+
OVERDUE_1_DAY = "OVERDUE_1_DAY",
|
|
15
|
+
/** Día 3 de mora. */
|
|
16
|
+
OVERDUE_3_DAYS = "OVERDUE_3_DAYS",
|
|
17
|
+
/** Día 7 de mora. */
|
|
18
|
+
OVERDUE_7_DAYS = "OVERDUE_7_DAYS",
|
|
19
|
+
/** Día 14 de mora. */
|
|
20
|
+
OVERDUE_14_DAYS = "OVERDUE_14_DAYS",
|
|
21
|
+
/** Día 25 de mora: aviso previo al reporte a sociedades de información crediticia. */
|
|
22
|
+
OVERDUE_25_DAYS = "OVERDUE_25_DAYS",
|
|
23
|
+
/** Día 30 de mora: el crédito ya fue reportado a sociedades de información crediticia. */
|
|
24
|
+
OVERDUE_30_DAYS = "OVERDUE_30_DAYS",
|
|
25
|
+
/** Día 60 de mora: último aviso, previo a la baja contable. */
|
|
26
|
+
OVERDUE_60_DAYS = "OVERDUE_60_DAYS"
|
|
27
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MdmNoticeTypeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Catálogo agnóstico de avisos automáticos de cobranza que se muestran en la pantalla del equipo.
|
|
6
|
+
* Cada connector traduce el valor a lo que su proveedor entiende (código de catálogo o texto crudo).
|
|
7
|
+
* No es la cadencia completa de cobranza: los hitos de otros canales (tarde del día 0, días 90 y 180) no se pintan acá.
|
|
8
|
+
*/
|
|
9
|
+
var MdmNoticeTypeEnum;
|
|
10
|
+
(function (MdmNoticeTypeEnum) {
|
|
11
|
+
/** Dos días antes del vencimiento de la cuota. */
|
|
12
|
+
MdmNoticeTypeEnum["PRE_DUE_2_DAYS"] = "PRE_DUE_2_DAYS";
|
|
13
|
+
/** Un día antes del vencimiento de la cuota. */
|
|
14
|
+
MdmNoticeTypeEnum["PRE_DUE_1_DAY"] = "PRE_DUE_1_DAY";
|
|
15
|
+
/** El día del vencimiento, mientras la cuota todavía no cae en mora. */
|
|
16
|
+
MdmNoticeTypeEnum["DUE_TODAY"] = "DUE_TODAY";
|
|
17
|
+
/** Día 1 de mora: el equipo ya está bloqueado. */
|
|
18
|
+
MdmNoticeTypeEnum["OVERDUE_1_DAY"] = "OVERDUE_1_DAY";
|
|
19
|
+
/** Día 3 de mora. */
|
|
20
|
+
MdmNoticeTypeEnum["OVERDUE_3_DAYS"] = "OVERDUE_3_DAYS";
|
|
21
|
+
/** Día 7 de mora. */
|
|
22
|
+
MdmNoticeTypeEnum["OVERDUE_7_DAYS"] = "OVERDUE_7_DAYS";
|
|
23
|
+
/** Día 14 de mora. */
|
|
24
|
+
MdmNoticeTypeEnum["OVERDUE_14_DAYS"] = "OVERDUE_14_DAYS";
|
|
25
|
+
/** Día 25 de mora: aviso previo al reporte a sociedades de información crediticia. */
|
|
26
|
+
MdmNoticeTypeEnum["OVERDUE_25_DAYS"] = "OVERDUE_25_DAYS";
|
|
27
|
+
/** Día 30 de mora: el crédito ya fue reportado a sociedades de información crediticia. */
|
|
28
|
+
MdmNoticeTypeEnum["OVERDUE_30_DAYS"] = "OVERDUE_30_DAYS";
|
|
29
|
+
/** Día 60 de mora: último aviso, previo a la baja contable. */
|
|
30
|
+
MdmNoticeTypeEnum["OVERDUE_60_DAYS"] = "OVERDUE_60_DAYS";
|
|
31
|
+
})(MdmNoticeTypeEnum || (exports.MdmNoticeTypeEnum = MdmNoticeTypeEnum = {}));
|
package/bin/mdm/index.d.ts
CHANGED
|
@@ -45,4 +45,5 @@ export * from "./enums/MdmOperationStatusEnum";
|
|
|
45
45
|
export * from "./enums/MdmErrorCodeEnum";
|
|
46
46
|
export * from "./enums/MdmProviderEnum";
|
|
47
47
|
export * from "./enums/MdmOperationTypeEnum";
|
|
48
|
+
export * from "./enums/MdmNoticeTypeEnum";
|
|
48
49
|
export { MdmLockModeEnum } from "../retailCatalog/enums/MdmLockModeEnum";
|
package/bin/mdm/index.js
CHANGED
|
@@ -69,6 +69,7 @@ __exportStar(require("./enums/MdmOperationStatusEnum"), exports);
|
|
|
69
69
|
__exportStar(require("./enums/MdmErrorCodeEnum"), exports);
|
|
70
70
|
__exportStar(require("./enums/MdmProviderEnum"), exports);
|
|
71
71
|
__exportStar(require("./enums/MdmOperationTypeEnum"), exports);
|
|
72
|
+
__exportStar(require("./enums/MdmNoticeTypeEnum"), exports);
|
|
72
73
|
// enums de otro dominio — el modo de bloqueo lo define el producto en el catálogo
|
|
73
74
|
var MdmLockModeEnum_1 = require("../retailCatalog/enums/MdmLockModeEnum");
|
|
74
75
|
Object.defineProperty(exports, "MdmLockModeEnum", { enumerable: true, get: function () { return MdmLockModeEnum_1.MdmLockModeEnum; } });
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReceptionMethod } from "../enums/ReceptionMethod";
|
|
2
|
+
/**
|
|
3
|
+
* DTOs de la administración de payers desde el backoffice (v1: enabled + override de nombre).
|
|
4
|
+
* La lista de payers la dicta el catálogo UniTeller; la config es un overlay por payerCode.
|
|
5
|
+
* Dueño de la tabla RemittancePayerConfig_GT: remittance-business.
|
|
6
|
+
*/
|
|
7
|
+
/** Item de la vista de backoffice (Ops): TODOS los payers del catálogo, también deshabilitados. */
|
|
8
|
+
export declare class RemittancePayerConfigItem {
|
|
9
|
+
payerCode: string;
|
|
10
|
+
countryISO: string;
|
|
11
|
+
/** Nombre efectivo: override de Ops si existe, si no el de UniTeller. */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Nombre original de UniTeller (para mostrar/quitar el override). */
|
|
14
|
+
unirName: string;
|
|
15
|
+
receptionMethods: ReceptionMethod[];
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
/** true si ya existe fila de config para ese payer (false = solo del catálogo). */
|
|
18
|
+
configured: boolean;
|
|
19
|
+
/** Logo de UniTeller, solo lectura (identificación visual en la lista). */
|
|
20
|
+
logoUrl?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Response de GET /backoffice/config/payers (config chica, sin paginación). */
|
|
23
|
+
export declare class RemittancePayerConfigListResponse {
|
|
24
|
+
items: RemittancePayerConfigItem[];
|
|
25
|
+
}
|
|
26
|
+
/** Body de PUT /backoffice/config/payers/{payerCode}. Ambos opcionales (merge con lo existente); name=null quita el override. */
|
|
27
|
+
export declare class RemittancePayerConfigUpdateRequest {
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
name?: string | null;
|
|
30
|
+
}
|
|
31
|
+
/** Fila cruda de config (endpoint privado → connector, que la mergea al servir el catálogo). */
|
|
32
|
+
export declare class RemittancePayerConfigEntry {
|
|
33
|
+
payerCode: string;
|
|
34
|
+
countryISO: string;
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
name?: string;
|
|
37
|
+
updatedAt: string;
|
|
38
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.RemittancePayerConfigEntry = exports.RemittancePayerConfigUpdateRequest = exports.RemittancePayerConfigListResponse = exports.RemittancePayerConfigItem = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* DTOs de la administración de payers desde el backoffice (v1: enabled + override de nombre).
|
|
16
|
+
* La lista de payers la dicta el catálogo UniTeller; la config es un overlay por payerCode.
|
|
17
|
+
* Dueño de la tabla RemittancePayerConfig_GT: remittance-business.
|
|
18
|
+
*/
|
|
19
|
+
/** Item de la vista de backoffice (Ops): TODOS los payers del catálogo, también deshabilitados. */
|
|
20
|
+
class RemittancePayerConfigItem {
|
|
21
|
+
}
|
|
22
|
+
exports.RemittancePayerConfigItem = RemittancePayerConfigItem;
|
|
23
|
+
/** Response de GET /backoffice/config/payers (config chica, sin paginación). */
|
|
24
|
+
class RemittancePayerConfigListResponse {
|
|
25
|
+
}
|
|
26
|
+
exports.RemittancePayerConfigListResponse = RemittancePayerConfigListResponse;
|
|
27
|
+
/** Body de PUT /backoffice/config/payers/{payerCode}. Ambos opcionales (merge con lo existente); name=null quita el override. */
|
|
28
|
+
class RemittancePayerConfigUpdateRequest {
|
|
29
|
+
}
|
|
30
|
+
exports.RemittancePayerConfigUpdateRequest = RemittancePayerConfigUpdateRequest;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsOptional)(),
|
|
33
|
+
(0, class_validator_1.IsBoolean)(),
|
|
34
|
+
__metadata("design:type", Boolean)
|
|
35
|
+
], RemittancePayerConfigUpdateRequest.prototype, "enabled", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_validator_1.IsOptional)(),
|
|
38
|
+
(0, class_validator_1.IsString)(),
|
|
39
|
+
(0, class_validator_1.Length)(1, 60),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], RemittancePayerConfigUpdateRequest.prototype, "name", void 0);
|
|
42
|
+
/** Fila cruda de config (endpoint privado → connector, que la mergea al servir el catálogo). */
|
|
43
|
+
class RemittancePayerConfigEntry {
|
|
44
|
+
}
|
|
45
|
+
exports.RemittancePayerConfigEntry = RemittancePayerConfigEntry;
|
|
@@ -46,5 +46,6 @@ export * from "./RemittanceRule";
|
|
|
46
46
|
export * from "./RemittancePricingTable";
|
|
47
47
|
export * from "./RemittanceExceptionCatalog";
|
|
48
48
|
export * from "./RemittanceCountryConfig";
|
|
49
|
+
export * from "./RemittancePayerConfig";
|
|
49
50
|
export * from "./RemittanceFavoriteItem";
|
|
50
51
|
export * from "./RemittanceFavoriteListResponse";
|
|
@@ -62,5 +62,6 @@ __exportStar(require("./RemittanceRule"), exports);
|
|
|
62
62
|
__exportStar(require("./RemittancePricingTable"), exports);
|
|
63
63
|
__exportStar(require("./RemittanceExceptionCatalog"), exports);
|
|
64
64
|
__exportStar(require("./RemittanceCountryConfig"), exports);
|
|
65
|
+
__exportStar(require("./RemittancePayerConfig"), exports);
|
|
65
66
|
__exportStar(require("./RemittanceFavoriteItem"), exports);
|
|
66
67
|
__exportStar(require("./RemittanceFavoriteListResponse"), exports);
|
|
@@ -9,6 +9,7 @@ var AuditEntityType;
|
|
|
9
9
|
AuditEntityType["COHORT"] = "COHORT";
|
|
10
10
|
AuditEntityType["COMMITTEE"] = "COMMITTEE";
|
|
11
11
|
AuditEntityType["COUNTRY_CONFIG"] = "COUNTRY_CONFIG";
|
|
12
|
+
AuditEntityType["PAYER_CONFIG"] = "PAYER_CONFIG";
|
|
12
13
|
AuditEntityType["SEGMENT"] = "SEGMENT";
|
|
13
14
|
AuditEntityType["PRICING"] = "PRICING";
|
|
14
15
|
AuditEntityType["PROMOTION"] = "PROMOTION";
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsEnum, IsNotEmpty, IsString, Matches, MaxLength } from 'class-validator';
|
|
2
|
+
import { IsEnum, IsNotEmpty, IsOptional, IsString, Matches, MaxLength } from 'class-validator';
|
|
3
3
|
import { DeviceNotifyIntensityEnum } from '../../mdm/enums/DeviceNotifyIntensityEnum';
|
|
4
|
+
import { MdmNoticeTypeEnum } from '../../mdm/enums/MdmNoticeTypeEnum';
|
|
4
5
|
import { CREDIT_ID_MESSAGE, CREDIT_ID_PATTERN } from '../constants/CreditIdPattern';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
|
-
* Ítem de notificación: a qué crédito se le avisa y con qué
|
|
8
|
-
*
|
|
8
|
+
* Ítem de notificación: a qué crédito se le avisa y con qué aviso.
|
|
9
|
+
* El aviso viaja como `noticeType`; los tres campos de texto siguen siendo obligatorios porque
|
|
10
|
+
* Datacultr usa el código del catálogo y Trustonic el texto crudo.
|
|
9
11
|
*/
|
|
10
12
|
export class LoanDeviceNotifyItem {
|
|
11
13
|
@Expose()
|
|
@@ -16,18 +18,31 @@ export class LoanDeviceNotifyItem {
|
|
|
16
18
|
@IsEnum(DeviceNotifyIntensityEnum)
|
|
17
19
|
intensity: DeviceNotifyIntensityEnum;
|
|
18
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Id agnóstico del aviso; cada connector lo traduce a lo que su proveedor entiende.
|
|
23
|
+
* Los connectors lo van a preferir sobre `notificationCode`/`title`/`content`;
|
|
24
|
+
* hasta entonces esos tres siguen siendo la fuente.
|
|
25
|
+
*/
|
|
26
|
+
@Expose()
|
|
27
|
+
@IsOptional()
|
|
28
|
+
@IsEnum(MdmNoticeTypeEnum)
|
|
29
|
+
noticeType?: MdmNoticeTypeEnum;
|
|
30
|
+
|
|
31
|
+
/** Código de notificación del catálogo de Datacultr. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
19
32
|
@Expose()
|
|
20
33
|
@IsString()
|
|
21
34
|
@IsNotEmpty()
|
|
22
35
|
@MaxLength(64)
|
|
23
36
|
notificationCode: string;
|
|
24
37
|
|
|
38
|
+
/** Título crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
25
39
|
@Expose()
|
|
26
40
|
@IsString()
|
|
27
41
|
@IsNotEmpty()
|
|
28
42
|
@MaxLength(128)
|
|
29
43
|
title: string;
|
|
30
44
|
|
|
45
|
+
/** Cuerpo crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
31
46
|
@Expose()
|
|
32
47
|
@IsString()
|
|
33
48
|
@IsNotEmpty()
|
package/src/loanCredit/index.ts
CHANGED
|
@@ -45,6 +45,7 @@ export { MdmOperationTypeEnum } from '../mdm/enums/MdmOperationTypeEnum';
|
|
|
45
45
|
export { MdmProviderEnum } from '../mdm/enums/MdmProviderEnum';
|
|
46
46
|
export { DeviceEnrollmentModeEnum } from '../mdm/enums/DeviceEnrollmentModeEnum';
|
|
47
47
|
export { DeviceNotifyIntensityEnum } from '../mdm/enums/DeviceNotifyIntensityEnum';
|
|
48
|
+
export { MdmNoticeTypeEnum } from '../mdm/enums/MdmNoticeTypeEnum';
|
|
48
49
|
export { DeviceReleaseReasonEnum } from '../mdm/enums/DeviceReleaseReasonEnum';
|
|
49
50
|
export { MdmError } from '../mdm/dtos/MdmError';
|
|
50
51
|
export { DeviceLockScreenMessage } from '../mdm/dtos/DeviceLockScreenMessage';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Expose } from "class-transformer";
|
|
2
|
-
import { IsString, IsNotEmpty, IsEnum } from "class-validator";
|
|
2
|
+
import { IsString, IsNotEmpty, IsEnum, IsOptional } from "class-validator";
|
|
3
3
|
import { DeviceNotifyIntensityEnum } from "../enums/DeviceNotifyIntensityEnum";
|
|
4
|
+
import { MdmNoticeTypeEnum } from "../enums/MdmNoticeTypeEnum";
|
|
4
5
|
|
|
5
6
|
export class DeviceNotifyRequest {
|
|
6
7
|
@Expose()
|
|
@@ -13,28 +14,28 @@ export class DeviceNotifyRequest {
|
|
|
13
14
|
intensity: DeviceNotifyIntensityEnum;
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Id agnóstico del aviso; cada connector lo traduce a lo que su proveedor entiende.
|
|
18
|
+
* Los connectors lo van a preferir sobre `notificationCode`/`title`/`content`;
|
|
19
|
+
* hasta entonces esos tres siguen siendo la fuente.
|
|
19
20
|
*/
|
|
20
21
|
@Expose()
|
|
22
|
+
@IsOptional()
|
|
23
|
+
@IsEnum(MdmNoticeTypeEnum)
|
|
24
|
+
noticeType?: MdmNoticeTypeEnum;
|
|
25
|
+
|
|
26
|
+
/** Código de notificación del catálogo de Datacultr. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
27
|
+
@Expose()
|
|
21
28
|
@IsString()
|
|
22
29
|
@IsNotEmpty()
|
|
23
30
|
notificationCode: string;
|
|
24
31
|
|
|
25
|
-
/**
|
|
26
|
-
* Título de la notificación. Usado por Trustonic (`notificationTitle`). Datacultr lo
|
|
27
|
-
* ignora — el texto del título vive en su catálogo indexado por `notificationCode`.
|
|
28
|
-
*/
|
|
32
|
+
/** Título crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
29
33
|
@Expose()
|
|
30
34
|
@IsString()
|
|
31
35
|
@IsNotEmpty()
|
|
32
36
|
title: string;
|
|
33
37
|
|
|
34
|
-
/**
|
|
35
|
-
* Cuerpo de la notificación. Usado por Trustonic (`notificationContent`). Datacultr lo
|
|
36
|
-
* ignora.
|
|
37
|
-
*/
|
|
38
|
+
/** Cuerpo crudo que exige Trustonic. Queda por compatibilidad durante la migración a `noticeType`. */
|
|
38
39
|
@Expose()
|
|
39
40
|
@IsString()
|
|
40
41
|
@IsNotEmpty()
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export enum MdmErrorCodeEnum {
|
|
2
|
-
/** El proveedor no
|
|
2
|
+
/** El proveedor no tiene la operación: no depende de cómo se enroló el equipo. */
|
|
3
3
|
PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
|
|
4
|
+
/** El proveedor la tiene, pero ESTE equipo no la admite por cómo se enroló. No es terminal. */
|
|
5
|
+
DEVICE_CAPABILITY_NOT_SUPPORTED = "DEVICE_CAPABILITY_NOT_SUPPORTED",
|
|
4
6
|
/** No hay connector cableado para ese proveedor: reintentar nunca lo resuelve. */
|
|
5
7
|
CONNECTOR_NOT_WIRED = "CONNECTOR_NOT_WIRED",
|
|
6
8
|
DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catálogo agnóstico de avisos automáticos de cobranza que se muestran en la pantalla del equipo.
|
|
3
|
+
* Cada connector traduce el valor a lo que su proveedor entiende (código de catálogo o texto crudo).
|
|
4
|
+
* No es la cadencia completa de cobranza: los hitos de otros canales (tarde del día 0, días 90 y 180) no se pintan acá.
|
|
5
|
+
*/
|
|
6
|
+
export enum MdmNoticeTypeEnum {
|
|
7
|
+
/** Dos días antes del vencimiento de la cuota. */
|
|
8
|
+
PRE_DUE_2_DAYS = "PRE_DUE_2_DAYS",
|
|
9
|
+
/** Un día antes del vencimiento de la cuota. */
|
|
10
|
+
PRE_DUE_1_DAY = "PRE_DUE_1_DAY",
|
|
11
|
+
/** El día del vencimiento, mientras la cuota todavía no cae en mora. */
|
|
12
|
+
DUE_TODAY = "DUE_TODAY",
|
|
13
|
+
/** Día 1 de mora: el equipo ya está bloqueado. */
|
|
14
|
+
OVERDUE_1_DAY = "OVERDUE_1_DAY",
|
|
15
|
+
/** Día 3 de mora. */
|
|
16
|
+
OVERDUE_3_DAYS = "OVERDUE_3_DAYS",
|
|
17
|
+
/** Día 7 de mora. */
|
|
18
|
+
OVERDUE_7_DAYS = "OVERDUE_7_DAYS",
|
|
19
|
+
/** Día 14 de mora. */
|
|
20
|
+
OVERDUE_14_DAYS = "OVERDUE_14_DAYS",
|
|
21
|
+
/** Día 25 de mora: aviso previo al reporte a sociedades de información crediticia. */
|
|
22
|
+
OVERDUE_25_DAYS = "OVERDUE_25_DAYS",
|
|
23
|
+
/** Día 30 de mora: el crédito ya fue reportado a sociedades de información crediticia. */
|
|
24
|
+
OVERDUE_30_DAYS = "OVERDUE_30_DAYS",
|
|
25
|
+
/** Día 60 de mora: último aviso, previo a la baja contable. */
|
|
26
|
+
OVERDUE_60_DAYS = "OVERDUE_60_DAYS"
|
|
27
|
+
}
|
package/src/mdm/index.ts
CHANGED
|
@@ -58,6 +58,7 @@ export * from "./enums/MdmOperationStatusEnum";
|
|
|
58
58
|
export * from "./enums/MdmErrorCodeEnum";
|
|
59
59
|
export * from "./enums/MdmProviderEnum";
|
|
60
60
|
export * from "./enums/MdmOperationTypeEnum";
|
|
61
|
+
export * from "./enums/MdmNoticeTypeEnum";
|
|
61
62
|
|
|
62
63
|
// enums de otro dominio — el modo de bloqueo lo define el producto en el catálogo
|
|
63
64
|
export { MdmLockModeEnum } from "../retailCatalog/enums/MdmLockModeEnum";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { IsBoolean, IsOptional, IsString, Length } from "class-validator";
|
|
2
|
+
import { ReceptionMethod } from "../enums/ReceptionMethod";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* DTOs de la administración de payers desde el backoffice (v1: enabled + override de nombre).
|
|
6
|
+
* La lista de payers la dicta el catálogo UniTeller; la config es un overlay por payerCode.
|
|
7
|
+
* Dueño de la tabla RemittancePayerConfig_GT: remittance-business.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/** Item de la vista de backoffice (Ops): TODOS los payers del catálogo, también deshabilitados. */
|
|
11
|
+
export class RemittancePayerConfigItem {
|
|
12
|
+
payerCode!: string;
|
|
13
|
+
countryISO!: string;
|
|
14
|
+
/** Nombre efectivo: override de Ops si existe, si no el de UniTeller. */
|
|
15
|
+
name!: string;
|
|
16
|
+
/** Nombre original de UniTeller (para mostrar/quitar el override). */
|
|
17
|
+
unirName!: string;
|
|
18
|
+
receptionMethods!: ReceptionMethod[];
|
|
19
|
+
enabled!: boolean;
|
|
20
|
+
/** true si ya existe fila de config para ese payer (false = solo del catálogo). */
|
|
21
|
+
configured!: boolean;
|
|
22
|
+
/** Logo de UniTeller, solo lectura (identificación visual en la lista). */
|
|
23
|
+
logoUrl?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Response de GET /backoffice/config/payers (config chica, sin paginación). */
|
|
27
|
+
export class RemittancePayerConfigListResponse {
|
|
28
|
+
items!: RemittancePayerConfigItem[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Body de PUT /backoffice/config/payers/{payerCode}. Ambos opcionales (merge con lo existente); name=null quita el override. */
|
|
32
|
+
export class RemittancePayerConfigUpdateRequest {
|
|
33
|
+
@IsOptional()
|
|
34
|
+
@IsBoolean()
|
|
35
|
+
enabled?: boolean;
|
|
36
|
+
|
|
37
|
+
@IsOptional()
|
|
38
|
+
@IsString()
|
|
39
|
+
@Length(1, 60)
|
|
40
|
+
name?: string | null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Fila cruda de config (endpoint privado → connector, que la mergea al servir el catálogo). */
|
|
44
|
+
export class RemittancePayerConfigEntry {
|
|
45
|
+
payerCode!: string;
|
|
46
|
+
countryISO!: string;
|
|
47
|
+
enabled!: boolean;
|
|
48
|
+
name?: string;
|
|
49
|
+
updatedAt!: string;
|
|
50
|
+
}
|
|
@@ -46,5 +46,6 @@ export * from "./RemittanceRule";
|
|
|
46
46
|
export * from "./RemittancePricingTable";
|
|
47
47
|
export * from "./RemittanceExceptionCatalog";
|
|
48
48
|
export * from "./RemittanceCountryConfig";
|
|
49
|
+
export * from "./RemittancePayerConfig";
|
|
49
50
|
export * from "./RemittanceFavoriteItem";
|
|
50
51
|
export * from "./RemittanceFavoriteListResponse";
|