@fiado/type-kit 3.299.0 → 3.301.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/retailWizard/occupationRequest.test.ts +49 -0
- package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +11 -0
- package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +46 -0
- package/bin/loanCredit/enums/ClientLevelEnum.d.ts +11 -0
- package/bin/loanCredit/enums/ClientLevelEnum.js +15 -0
- package/bin/remittance/dtos/RemittanceBeneficiary.d.ts +4 -2
- package/bin/remittance/dtos/RemittanceSendPreviewResponse.d.ts +3 -0
- package/bin/retailWizard/catalog/monthlyIncome.d.ts +6 -0
- package/bin/retailWizard/catalog/monthlyIncome.js +8 -0
- package/bin/retailWizard/dtos/WizardSession.d.ts +2 -0
- package/bin/retailWizard/dtos/requests/OccupationRequest.d.ts +4 -3
- package/bin/retailWizard/dtos/requests/OccupationRequest.js +9 -3
- package/bin/retailWizard/dtos/requests/ProfileQuestionsRequest.d.ts +0 -2
- package/bin/retailWizard/dtos/requests/ProfileQuestionsRequest.js +3 -4
- package/bin/retailWizard/index.d.ts +1 -0
- package/bin/retailWizard/index.js +2 -0
- package/package.json +1 -1
- package/src/remittance/dtos/RemittanceBeneficiary.ts +5 -3
- package/src/remittance/dtos/RemittanceSendPreviewResponse.ts +3 -0
- package/src/retailWizard/catalog/monthlyIncome.ts +7 -0
- package/src/retailWizard/dtos/WizardSession.ts +2 -0
- package/src/retailWizard/dtos/requests/OccupationRequest.ts +10 -4
- package/src/retailWizard/dtos/requests/ProfileQuestionsRequest.ts +1 -3
- package/src/retailWizard/index.ts +3 -0
- package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +0 -11
- package/bin/benefitCenter/enums/BenefitFlowEnum.js +0 -15
- package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +0 -11
- package/bin/loanConfig/enums/ModifiableByRoleEnum.js +0 -15
- package/bin/places/dtos/CashInFeeDto.d.ts +0 -17
- package/bin/places/dtos/CashInFeeDto.js +0 -12
- package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +0 -22
- package/bin/platformRbac/dtos/ResendOtpRequest.js +0 -36
- package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +0 -11
- package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.js +0 -36
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import { OccupationRequest } from '../../../src/retailWizard/dtos/requests/OccupationRequest';
|
|
5
|
+
import { ProfileQuestionsRequest } from '../../../src/retailWizard/dtos/requests/ProfileQuestionsRequest';
|
|
6
|
+
import { MONTHLY_INCOME_VALUES } from '../../../src/retailWizard/catalog/monthlyIncome';
|
|
7
|
+
import { OccupationEnum } from '../../../src/retailWizard/enums/OccupationEnum';
|
|
8
|
+
|
|
9
|
+
function errorsOf(payload: Record<string, unknown>): string[] {
|
|
10
|
+
const dto = plainToInstance(OccupationRequest, payload, { excludeExtraneousValues: true });
|
|
11
|
+
return validateSync(dto).map((e) => e.property);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
describe('OccupationRequest — la ocupación viaja con el ingreso mensual (paso 02)', () => {
|
|
15
|
+
it('acepta una ocupación con un ingreso del catálogo', () => {
|
|
16
|
+
expect(errorsOf({ occupation: OccupationEnum.EMPLOYED, monthlyIncome: '20000' })).toEqual([]);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('el ingreso es obligatorio: sin él la ocupación sola no pasa', () => {
|
|
20
|
+
expect(errorsOf({ occupation: OccupationEnum.EMPLOYED })).toContain('monthlyIncome');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('rechaza un ingreso fuera del catálogo', () => {
|
|
24
|
+
expect(errorsOf({ occupation: OccupationEnum.EMPLOYED, monthlyIncome: '999' })).toContain(
|
|
25
|
+
'monthlyIncome',
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it.each(MONTHLY_INCOME_VALUES)('acepta el valor %s del catálogo', (valor) => {
|
|
30
|
+
expect(errorsOf({ occupation: OccupationEnum.EMPLOYED, monthlyIncome: valor })).toEqual([]);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Es la MISMA pregunta que el paso 10: si los catálogos se separan, el paso 10 pisaría el paso 02
|
|
34
|
+
// con un valor que el otro no acepta.
|
|
35
|
+
it('el paso 10 valida el ingreso contra el mismo catálogo', () => {
|
|
36
|
+
const dto = plainToInstance(
|
|
37
|
+
ProfileQuestionsRequest,
|
|
38
|
+
{
|
|
39
|
+
monthlyIncome: '150000',
|
|
40
|
+
monthlyExtraSupport: '0',
|
|
41
|
+
usageMonthly: '60',
|
|
42
|
+
maximumTx: '10000',
|
|
43
|
+
beneficialOwner: 'SELF',
|
|
44
|
+
},
|
|
45
|
+
{ excludeExtraneousValues: true },
|
|
46
|
+
);
|
|
47
|
+
expect(validateSync(dto)).toEqual([]);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Body de PUT /credits/:creditId/checklist (loan-credit-business). Marca condiciones de activación
|
|
3
|
+
* cumplidas. Solo se mandan las que cambian; en F3 las marcarán los flujos de firma de contrato
|
|
4
|
+
* (`downPayment` + `contractSigned`) y de enrolamiento MDM (`imeiEnrolled` + `lockVerified`).
|
|
5
|
+
*/
|
|
6
|
+
export declare class UpdateActivationChecklistRequest {
|
|
7
|
+
downPayment?: boolean;
|
|
8
|
+
contractSigned?: boolean;
|
|
9
|
+
imeiEnrolled?: boolean;
|
|
10
|
+
lockVerified?: boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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.UpdateActivationChecklistRequest = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* Body de PUT /credits/:creditId/checklist (loan-credit-business). Marca condiciones de activación
|
|
17
|
+
* cumplidas. Solo se mandan las que cambian; en F3 las marcarán los flujos de firma de contrato
|
|
18
|
+
* (`downPayment` + `contractSigned`) y de enrolamiento MDM (`imeiEnrolled` + `lockVerified`).
|
|
19
|
+
*/
|
|
20
|
+
class UpdateActivationChecklistRequest {
|
|
21
|
+
}
|
|
22
|
+
exports.UpdateActivationChecklistRequest = UpdateActivationChecklistRequest;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
(0, class_validator_1.IsOptional)(),
|
|
26
|
+
(0, class_validator_1.IsBoolean)(),
|
|
27
|
+
__metadata("design:type", Boolean)
|
|
28
|
+
], UpdateActivationChecklistRequest.prototype, "downPayment", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_transformer_1.Expose)(),
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsBoolean)(),
|
|
33
|
+
__metadata("design:type", Boolean)
|
|
34
|
+
], UpdateActivationChecklistRequest.prototype, "contractSigned", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_transformer_1.Expose)(),
|
|
37
|
+
(0, class_validator_1.IsOptional)(),
|
|
38
|
+
(0, class_validator_1.IsBoolean)(),
|
|
39
|
+
__metadata("design:type", Boolean)
|
|
40
|
+
], UpdateActivationChecklistRequest.prototype, "imeiEnrolled", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_transformer_1.Expose)(),
|
|
43
|
+
(0, class_validator_1.IsOptional)(),
|
|
44
|
+
(0, class_validator_1.IsBoolean)(),
|
|
45
|
+
__metadata("design:type", Boolean)
|
|
46
|
+
], UpdateActivationChecklistRequest.prototype, "lockVerified", void 0);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nivel del cliente según su SCI (M7/05_MOTOR §3.2): 21-60 Bronce · 61-80 Plata · 81-100 Oro.
|
|
3
|
+
* Distinto de `CreditPlanLevelEnum` de loanOfferings (que además tiene `ALL` para planes):
|
|
4
|
+
* un CLIENTE nunca es `ALL`.
|
|
5
|
+
* @enum {string}
|
|
6
|
+
*/
|
|
7
|
+
export declare enum ClientLevelEnum {
|
|
8
|
+
BRONZE = "BRONZE",
|
|
9
|
+
SILVER = "SILVER",
|
|
10
|
+
GOLD = "GOLD"
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientLevelEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Nivel del cliente según su SCI (M7/05_MOTOR §3.2): 21-60 Bronce · 61-80 Plata · 81-100 Oro.
|
|
6
|
+
* Distinto de `CreditPlanLevelEnum` de loanOfferings (que además tiene `ALL` para planes):
|
|
7
|
+
* un CLIENTE nunca es `ALL`.
|
|
8
|
+
* @enum {string}
|
|
9
|
+
*/
|
|
10
|
+
var ClientLevelEnum;
|
|
11
|
+
(function (ClientLevelEnum) {
|
|
12
|
+
ClientLevelEnum["BRONZE"] = "BRONZE";
|
|
13
|
+
ClientLevelEnum["SILVER"] = "SILVER";
|
|
14
|
+
ClientLevelEnum["GOLD"] = "GOLD";
|
|
15
|
+
})(ClientLevelEnum || (exports.ClientLevelEnum = ClientLevelEnum = {}));
|
|
@@ -2,8 +2,9 @@ import { ReceptionMethod } from "../enums/ReceptionMethod";
|
|
|
2
2
|
import { RemittanceCountryISO } from "../enums/RemittanceCountryISO";
|
|
3
3
|
/**
|
|
4
4
|
* Beneficiary shape cross-lambda. Estado: `ACTIVE` o `DEACTIVATED`.
|
|
5
|
-
* `
|
|
6
|
-
*
|
|
5
|
+
* `accNumber` completo se expone para display en la app (pedido de producto
|
|
6
|
+
* 2026-08-11: mostrar la cuenta sin enmascarar); `accNumberLastFour` se
|
|
7
|
+
* mantiene por compat. UNIR mantiene la fuente de verdad.
|
|
7
8
|
*/
|
|
8
9
|
export type RemittanceBeneficiaryStatus = "ACTIVE" | "DEACTIVATED";
|
|
9
10
|
export interface RemittanceBeneficiaryAddress {
|
|
@@ -28,6 +29,7 @@ export declare class RemittanceBeneficiary {
|
|
|
28
29
|
payerName: string;
|
|
29
30
|
payerBranchCode?: string;
|
|
30
31
|
payerBranchName?: string;
|
|
32
|
+
accNumber?: string;
|
|
31
33
|
accNumberLastFour?: string;
|
|
32
34
|
address?: RemittanceBeneficiaryAddress;
|
|
33
35
|
status: RemittanceBeneficiaryStatus;
|
|
@@ -2,6 +2,9 @@ import { RemittanceConfirmRequest } from "./RemittanceConfirmRequest";
|
|
|
2
2
|
export interface RemittanceBeneficiaryDisplay {
|
|
3
3
|
name: string;
|
|
4
4
|
bank?: string;
|
|
5
|
+
/** Cuenta completa para display (pedido producto 2026-08-11: sin enmascarar). */
|
|
6
|
+
accNumber?: string;
|
|
7
|
+
/** Se mantiene por compat con consumers previos. */
|
|
5
8
|
lastFour?: string;
|
|
6
9
|
}
|
|
7
10
|
export declare class RemittanceSendPreviewResponse {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dataType=MonthlyIncomeMXN` — catálogo cerrado del ingreso mensual declarado (`AppSelectionData_GT`).
|
|
3
|
+
* Lo comparten el paso 02 (`OccupationRequest`) y el paso 10 (`ProfileQuestionsRequest`).
|
|
4
|
+
*/
|
|
5
|
+
export declare const MONTHLY_INCOME_VALUES: readonly ["0", "10000", "20000", "50000", "100000", "150000"];
|
|
6
|
+
export type MonthlyIncomeValue = (typeof MONTHLY_INCOME_VALUES)[number];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MONTHLY_INCOME_VALUES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `dataType=MonthlyIncomeMXN` — catálogo cerrado del ingreso mensual declarado (`AppSelectionData_GT`).
|
|
6
|
+
* Lo comparten el paso 02 (`OccupationRequest`) y el paso 10 (`ProfileQuestionsRequest`).
|
|
7
|
+
*/
|
|
8
|
+
exports.MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'];
|
|
@@ -68,6 +68,8 @@ export interface WizardSession {
|
|
|
68
68
|
metamapIdentityId: string | null;
|
|
69
69
|
occupation: OccupationEnum | null;
|
|
70
70
|
occupationOther: string | null;
|
|
71
|
+
/** Espejo del ingreso mensual declarado del paso 02. El dato VIVE en People de Fiado (D17). */
|
|
72
|
+
monthlyIncome: string | null;
|
|
71
73
|
/** Del gate `signInPhoneNumber` del 01a (D27). */
|
|
72
74
|
fiadoPhoneStatus: FiadoPhoneStatusEnum | null;
|
|
73
75
|
fiadoDirectoryId: string | null;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { OccupationEnum } from '../../enums/OccupationEnum';
|
|
2
2
|
/**
|
|
3
|
-
* POST /wizard/sessions/:id/occupation — registra la ocupación
|
|
4
|
-
* People de Fiado — D17).
|
|
5
|
-
* SureKeep Fase 2 — pista Retail.
|
|
3
|
+
* POST /wizard/sessions/:id/occupation — registra la ocupación y el ingreso mensual del expediente
|
|
4
|
+
* PCF (viven en People de Fiado — D17). Los dos obligatorios; `OTHER` abre texto ≤60.
|
|
6
5
|
*/
|
|
7
6
|
export declare class OccupationRequest {
|
|
8
7
|
occupation: OccupationEnum;
|
|
9
8
|
occupationOther?: string;
|
|
9
|
+
/** Mismo catálogo cerrado que el paso 10 (`ProfileQuestionsRequest`). */
|
|
10
|
+
monthlyIncome: string;
|
|
10
11
|
}
|
|
@@ -13,10 +13,10 @@ exports.OccupationRequest = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const OccupationEnum_1 = require("../../enums/OccupationEnum");
|
|
16
|
+
const monthlyIncome_1 = require("../../catalog/monthlyIncome");
|
|
16
17
|
/**
|
|
17
|
-
* POST /wizard/sessions/:id/occupation — registra la ocupación
|
|
18
|
-
* People de Fiado — D17).
|
|
19
|
-
* SureKeep Fase 2 — pista Retail.
|
|
18
|
+
* POST /wizard/sessions/:id/occupation — registra la ocupación y el ingreso mensual del expediente
|
|
19
|
+
* PCF (viven en People de Fiado — D17). Los dos obligatorios; `OTHER` abre texto ≤60.
|
|
20
20
|
*/
|
|
21
21
|
class OccupationRequest {
|
|
22
22
|
}
|
|
@@ -33,3 +33,9 @@ __decorate([
|
|
|
33
33
|
(0, class_validator_1.MaxLength)(60),
|
|
34
34
|
__metadata("design:type", String)
|
|
35
35
|
], OccupationRequest.prototype, "occupationOther", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
(0, class_validator_1.IsString)(),
|
|
39
|
+
(0, class_validator_1.IsIn)(monthlyIncome_1.MONTHLY_INCOME_VALUES),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], OccupationRequest.prototype, "monthlyIncome", void 0);
|
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
*
|
|
21
21
|
* SureKeep Fase 2 — pista Retail.
|
|
22
22
|
*/
|
|
23
|
-
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
24
|
-
export declare const MONTHLY_INCOME_VALUES: readonly ["0", "10000", "20000", "50000", "100000", "150000"];
|
|
25
23
|
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
26
24
|
export declare const EXTRA_SUPPORT_VALUES: readonly ["0", "2000", "10000", "20000", "50000", "60000"];
|
|
27
25
|
/**
|
|
@@ -9,9 +9,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ProfileQuestionsRequest = exports.BENEFICIAL_OWNER_VALUES = exports.MAXIMUM_TX_VALUES = exports.USAGE_MONTHLY_VALUES = exports.EXTRA_SUPPORT_VALUES =
|
|
12
|
+
exports.ProfileQuestionsRequest = exports.BENEFICIAL_OWNER_VALUES = exports.MAXIMUM_TX_VALUES = exports.USAGE_MONTHLY_VALUES = exports.EXTRA_SUPPORT_VALUES = void 0;
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
+
const monthlyIncome_1 = require("../../catalog/monthlyIncome");
|
|
15
16
|
/**
|
|
16
17
|
* POST /wizard/sessions/:id/profile-questions — el perfil transaccional del cliente (paso 10).
|
|
17
18
|
*
|
|
@@ -34,8 +35,6 @@ const class_validator_1 = require("class-validator");
|
|
|
34
35
|
*
|
|
35
36
|
* SureKeep Fase 2 — pista Retail.
|
|
36
37
|
*/
|
|
37
|
-
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
38
|
-
exports.MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'];
|
|
39
38
|
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
40
39
|
exports.EXTRA_SUPPORT_VALUES = ['0', '2000', '10000', '20000', '50000', '60000'];
|
|
41
40
|
/**
|
|
@@ -62,7 +61,7 @@ exports.ProfileQuestionsRequest = ProfileQuestionsRequest;
|
|
|
62
61
|
__decorate([
|
|
63
62
|
(0, class_transformer_1.Expose)(),
|
|
64
63
|
(0, class_validator_1.IsString)(),
|
|
65
|
-
(0, class_validator_1.IsIn)(
|
|
64
|
+
(0, class_validator_1.IsIn)(monthlyIncome_1.MONTHLY_INCOME_VALUES),
|
|
66
65
|
__metadata("design:type", String)
|
|
67
66
|
], ProfileQuestionsRequest.prototype, "monthlyIncome", void 0);
|
|
68
67
|
__decorate([
|
|
@@ -14,6 +14,8 @@ 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
|
+
// Catálogos de valores compartidos entre endpoints
|
|
18
|
+
__exportStar(require("./catalog/monthlyIncome"), exports);
|
|
17
19
|
// Enums
|
|
18
20
|
__exportStar(require("./enums/WizardStateEnum"), exports);
|
|
19
21
|
__exportStar(require("./enums/WizardStepEnum"), exports);
|
package/package.json
CHANGED
|
@@ -3,8 +3,9 @@ import { RemittanceCountryISO } from "../enums/RemittanceCountryISO";
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Beneficiary shape cross-lambda. Estado: `ACTIVE` o `DEACTIVATED`.
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
6
|
+
* `accNumber` completo se expone para display en la app (pedido de producto
|
|
7
|
+
* 2026-08-11: mostrar la cuenta sin enmascarar); `accNumberLastFour` se
|
|
8
|
+
* mantiene por compat. UNIR mantiene la fuente de verdad.
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
export type RemittanceBeneficiaryStatus = "ACTIVE" | "DEACTIVATED";
|
|
@@ -32,7 +33,8 @@ export class RemittanceBeneficiary {
|
|
|
32
33
|
payerName!: string;
|
|
33
34
|
payerBranchCode?: string;
|
|
34
35
|
payerBranchName?: string; // nombre de la sucursal (Cash Pickup); resuelto del catálogo al crear
|
|
35
|
-
|
|
36
|
+
accNumber?: string; // cuenta completa para display (pedido producto 2026-08-11)
|
|
37
|
+
accNumberLastFour?: string; // se mantiene por compat con consumers previos
|
|
36
38
|
address?: RemittanceBeneficiaryAddress;
|
|
37
39
|
status!: RemittanceBeneficiaryStatus;
|
|
38
40
|
lastUsedAt?: string;
|
|
@@ -3,6 +3,9 @@ import { RemittanceConfirmRequest } from "./RemittanceConfirmRequest";
|
|
|
3
3
|
export interface RemittanceBeneficiaryDisplay {
|
|
4
4
|
name: string;
|
|
5
5
|
bank?: string;
|
|
6
|
+
/** Cuenta completa para display (pedido producto 2026-08-11: sin enmascarar). */
|
|
7
|
+
accNumber?: string;
|
|
8
|
+
/** Se mantiene por compat con consumers previos. */
|
|
6
9
|
lastFour?: string;
|
|
7
10
|
}
|
|
8
11
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dataType=MonthlyIncomeMXN` — catálogo cerrado del ingreso mensual declarado (`AppSelectionData_GT`).
|
|
3
|
+
* Lo comparten el paso 02 (`OccupationRequest`) y el paso 10 (`ProfileQuestionsRequest`).
|
|
4
|
+
*/
|
|
5
|
+
export const MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'] as const;
|
|
6
|
+
|
|
7
|
+
export type MonthlyIncomeValue = (typeof MONTHLY_INCOME_VALUES)[number];
|
|
@@ -72,6 +72,8 @@ export interface WizardSession {
|
|
|
72
72
|
metamapIdentityId: string | null;
|
|
73
73
|
occupation: OccupationEnum | null;
|
|
74
74
|
occupationOther: string | null;
|
|
75
|
+
/** Espejo del ingreso mensual declarado del paso 02. El dato VIVE en People de Fiado (D17). */
|
|
76
|
+
monthlyIncome: string | null;
|
|
75
77
|
/** Del gate `signInPhoneNumber` del 01a (D27). */
|
|
76
78
|
fiadoPhoneStatus: FiadoPhoneStatusEnum | null;
|
|
77
79
|
fiadoDirectoryId: string | null;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsEnum, IsOptional, IsString, MaxLength } from 'class-validator';
|
|
2
|
+
import { IsEnum, IsIn, IsOptional, IsString, MaxLength } from 'class-validator';
|
|
3
3
|
import { OccupationEnum } from '../../enums/OccupationEnum';
|
|
4
|
+
import { MONTHLY_INCOME_VALUES } from '../../catalog/monthlyIncome';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
|
-
* POST /wizard/sessions/:id/occupation — registra la ocupación
|
|
7
|
-
* People de Fiado — D17).
|
|
8
|
-
* SureKeep Fase 2 — pista Retail.
|
|
7
|
+
* POST /wizard/sessions/:id/occupation — registra la ocupación y el ingreso mensual del expediente
|
|
8
|
+
* PCF (viven en People de Fiado — D17). Los dos obligatorios; `OTHER` abre texto ≤60.
|
|
9
9
|
*/
|
|
10
10
|
export class OccupationRequest {
|
|
11
11
|
@Expose()
|
|
@@ -17,4 +17,10 @@ export class OccupationRequest {
|
|
|
17
17
|
@IsString()
|
|
18
18
|
@MaxLength(60)
|
|
19
19
|
occupationOther?: string;
|
|
20
|
+
|
|
21
|
+
/** Mismo catálogo cerrado que el paso 10 (`ProfileQuestionsRequest`). */
|
|
22
|
+
@Expose()
|
|
23
|
+
@IsString()
|
|
24
|
+
@IsIn(MONTHLY_INCOME_VALUES as unknown as string[])
|
|
25
|
+
monthlyIncome!: string;
|
|
20
26
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
2
|
import { IsIn, IsString } from 'class-validator';
|
|
3
|
+
import { MONTHLY_INCOME_VALUES } from '../../catalog/monthlyIncome';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* POST /wizard/sessions/:id/profile-questions — el perfil transaccional del cliente (paso 10).
|
|
@@ -24,9 +25,6 @@ import { IsIn, IsString } from 'class-validator';
|
|
|
24
25
|
* SureKeep Fase 2 — pista Retail.
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
|
-
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
28
|
-
export const MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'] as const;
|
|
29
|
-
|
|
30
28
|
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
31
29
|
export const EXTRA_SUPPORT_VALUES = ['0', '2000', '10000', '20000', '50000', '60000'] as const;
|
|
32
30
|
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare enum BenefitFlowEnum {
|
|
2
|
-
TOPUPS = "TOPUPS",
|
|
3
|
-
BILL_PAYMENT = "BILL_PAYMENT",
|
|
4
|
-
CREDIT = "CREDIT",
|
|
5
|
-
INSURANCE = "INSURANCE",
|
|
6
|
-
DONATION = "DONATION",
|
|
7
|
-
PHARMACY = "PHARMACY",
|
|
8
|
-
REMITTANCE = "REMITTANCE",
|
|
9
|
-
/** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
|
|
10
|
-
WALLET_FUNDING = "WALLET_FUNDING"
|
|
11
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BenefitFlowEnum = void 0;
|
|
4
|
-
var BenefitFlowEnum;
|
|
5
|
-
(function (BenefitFlowEnum) {
|
|
6
|
-
BenefitFlowEnum["TOPUPS"] = "TOPUPS";
|
|
7
|
-
BenefitFlowEnum["BILL_PAYMENT"] = "BILL_PAYMENT";
|
|
8
|
-
BenefitFlowEnum["CREDIT"] = "CREDIT";
|
|
9
|
-
BenefitFlowEnum["INSURANCE"] = "INSURANCE";
|
|
10
|
-
BenefitFlowEnum["DONATION"] = "DONATION";
|
|
11
|
-
BenefitFlowEnum["PHARMACY"] = "PHARMACY";
|
|
12
|
-
BenefitFlowEnum["REMITTANCE"] = "REMITTANCE";
|
|
13
|
-
/** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
|
|
14
|
-
BenefitFlowEnum["WALLET_FUNDING"] = "WALLET_FUNDING";
|
|
15
|
-
})(BenefitFlowEnum || (exports.BenefitFlowEnum = BenefitFlowEnum = {}));
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
|
|
3
|
-
* `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
|
|
4
|
-
* TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
|
|
5
|
-
* @enum {string}
|
|
6
|
-
*/
|
|
7
|
-
export declare enum ModifiableByRoleEnum {
|
|
8
|
-
SUPER_ADMIN = "super_admin",
|
|
9
|
-
SOFOM_ADMIN = "sofom_admin",
|
|
10
|
-
RETAILER_ADMIN = "retailer_admin"
|
|
11
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModifiableByRoleEnum = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
|
|
6
|
-
* `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
|
|
7
|
-
* TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
|
|
8
|
-
* @enum {string}
|
|
9
|
-
*/
|
|
10
|
-
var ModifiableByRoleEnum;
|
|
11
|
-
(function (ModifiableByRoleEnum) {
|
|
12
|
-
ModifiableByRoleEnum["SUPER_ADMIN"] = "super_admin";
|
|
13
|
-
ModifiableByRoleEnum["SOFOM_ADMIN"] = "sofom_admin";
|
|
14
|
-
ModifiableByRoleEnum["RETAILER_ADMIN"] = "retailer_admin";
|
|
15
|
-
})(ModifiableByRoleEnum || (exports.ModifiableByRoleEnum = ModifiableByRoleEnum = {}));
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { CurrencyId } from '../../currency/enums/CurrencyId';
|
|
2
|
-
/**
|
|
3
|
-
* Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
|
|
4
|
-
* - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
|
|
5
|
-
* - Passport (MX): por red → `fixed` + `percentage`.
|
|
6
|
-
* Response DTO — sin decoradores de validación.
|
|
7
|
-
*/
|
|
8
|
-
export declare class CashInFeeDto {
|
|
9
|
-
/** Comisión fija, en la moneda del país. */
|
|
10
|
-
fixed?: number;
|
|
11
|
-
/** Porcentaje del monto depositado (0–100). */
|
|
12
|
-
percentage?: number;
|
|
13
|
-
/** Tope máximo de comisión (GreenDot: el asociado cobra hasta este cap). */
|
|
14
|
-
cap?: number;
|
|
15
|
-
/** Moneda del fee: USD (GreenDot) | MXN (Passport). */
|
|
16
|
-
currency: CurrencyId;
|
|
17
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CashInFeeDto = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
|
|
6
|
-
* - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
|
|
7
|
-
* - Passport (MX): por red → `fixed` + `percentage`.
|
|
8
|
-
* Response DTO — sin decoradores de validación.
|
|
9
|
-
*/
|
|
10
|
-
class CashInFeeDto {
|
|
11
|
-
}
|
|
12
|
-
exports.CashInFeeDto = CashInFeeDto;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MfaMethodEnum } from '../enums/MfaMethodEnum';
|
|
2
|
-
/**
|
|
3
|
-
* Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
4
|
-
* Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
|
|
5
|
-
* identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
|
|
6
|
-
* El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
|
|
7
|
-
* siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
|
|
8
|
-
*/
|
|
9
|
-
export declare class ResendOtpRequest {
|
|
10
|
-
email: string;
|
|
11
|
-
tenantId: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Respuesta del resend-otp. `session`/`mfaMethod` frescos del nuevo challenge CUSTOM_AUTH.
|
|
15
|
-
* Plain sin validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
|
|
16
|
-
* Ambos opcionales: en los caminos de rechazo silencioso (anti-enumeración) o ramas sin CUSTOM_AUTH
|
|
17
|
-
* el server responde 200 genérico sin session ni método.
|
|
18
|
-
*/
|
|
19
|
-
export interface ResendOtpResponse {
|
|
20
|
-
session?: string;
|
|
21
|
-
mfaMethod?: MfaMethodEnum;
|
|
22
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
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.ResendOtpRequest = void 0;
|
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
/**
|
|
16
|
-
* Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
17
|
-
* Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
|
|
18
|
-
* identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
|
|
19
|
-
* El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
|
|
20
|
-
* siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
|
|
21
|
-
*/
|
|
22
|
-
class ResendOtpRequest {
|
|
23
|
-
}
|
|
24
|
-
exports.ResendOtpRequest = ResendOtpRequest;
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, class_transformer_1.Expose)(),
|
|
27
|
-
(0, class_validator_1.IsEmail)(),
|
|
28
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
29
|
-
__metadata("design:type", String)
|
|
30
|
-
], ResendOtpRequest.prototype, "email", void 0);
|
|
31
|
-
__decorate([
|
|
32
|
-
(0, class_transformer_1.Expose)(),
|
|
33
|
-
(0, class_validator_1.IsString)(),
|
|
34
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
35
|
-
__metadata("design:type", String)
|
|
36
|
-
], ResendOtpRequest.prototype, "tenantId", void 0);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
3
|
-
* Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
|
|
4
|
-
* `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
|
|
5
|
-
* server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
|
|
6
|
-
* scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
|
|
7
|
-
*/
|
|
8
|
-
export declare class ResendSelfRegisterOtpRequest {
|
|
9
|
-
tenantId: string;
|
|
10
|
-
email: string;
|
|
11
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
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.ResendSelfRegisterOtpRequest = void 0;
|
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
/**
|
|
16
|
-
* Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
17
|
-
* Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
|
|
18
|
-
* `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
|
|
19
|
-
* server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
|
|
20
|
-
* scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
|
|
21
|
-
*/
|
|
22
|
-
class ResendSelfRegisterOtpRequest {
|
|
23
|
-
}
|
|
24
|
-
exports.ResendSelfRegisterOtpRequest = ResendSelfRegisterOtpRequest;
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, class_transformer_1.Expose)(),
|
|
27
|
-
(0, class_validator_1.IsString)(),
|
|
28
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
29
|
-
__metadata("design:type", String)
|
|
30
|
-
], ResendSelfRegisterOtpRequest.prototype, "tenantId", void 0);
|
|
31
|
-
__decorate([
|
|
32
|
-
(0, class_transformer_1.Expose)(),
|
|
33
|
-
(0, class_validator_1.IsEmail)(),
|
|
34
|
-
(0, class_validator_1.IsNotEmpty)(),
|
|
35
|
-
__metadata("design:type", String)
|
|
36
|
-
], ResendSelfRegisterOtpRequest.prototype, "email", void 0);
|