@fiado/type-kit 3.463.0 → 3.464.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/moneyTransfer/dtos.test.ts +298 -0
- package/_test_/unit/moneyTransfer/enums.test.ts +56 -0
- package/_test_/unit/stpSpei/additive.test.ts +84 -0
- package/bin/bankAccount/enums/BeneficiaryAccountTypeEnum.d.ts +20 -0
- package/bin/bankAccount/enums/BeneficiaryAccountTypeEnum.js +24 -0
- package/bin/bankAccount/index.d.ts +1 -0
- package/bin/bankAccount/index.js +1 -0
- package/bin/index.d.ts +1 -0
- package/bin/index.js +5 -1
- package/bin/moneyTransfer/dtos/BatchScheduleRequest.d.ts +7 -0
- package/bin/moneyTransfer/dtos/BatchScheduleRequest.js +28 -0
- package/bin/moneyTransfer/dtos/CreateSettlementRequest.d.ts +12 -0
- package/bin/moneyTransfer/dtos/CreateSettlementRequest.js +42 -0
- package/bin/moneyTransfer/dtos/MoneyTransferProductRequest.d.ts +37 -0
- package/bin/moneyTransfer/dtos/MoneyTransferProductRequest.js +131 -0
- package/bin/moneyTransfer/dtos/MoneyTransferServiceCreateRequest.d.ts +22 -0
- package/bin/moneyTransfer/dtos/MoneyTransferServiceCreateRequest.js +88 -0
- package/bin/moneyTransfer/dtos/MoneyTransferServiceUpdateRequest.d.ts +22 -0
- package/bin/moneyTransfer/dtos/MoneyTransferServiceUpdateRequest.js +103 -0
- package/bin/moneyTransfer/dtos/PendingDetailsResponse.d.ts +8 -0
- package/bin/moneyTransfer/dtos/PendingDetailsResponse.js +7 -0
- package/bin/moneyTransfer/dtos/RescheduleSettlementRequest.d.ts +5 -0
- package/bin/moneyTransfer/dtos/RescheduleSettlementRequest.js +23 -0
- package/bin/moneyTransfer/dtos/SettlementActionRequest.d.ts +4 -0
- package/bin/moneyTransfer/dtos/SettlementActionRequest.js +21 -0
- package/bin/moneyTransfer/dtos/SettlementListResponse.d.ts +6 -0
- package/bin/moneyTransfer/dtos/SettlementListResponse.js +7 -0
- package/bin/moneyTransfer/dtos/SettlementResponse.d.ts +36 -0
- package/bin/moneyTransfer/dtos/SettlementResponse.js +10 -0
- package/bin/moneyTransfer/dtos/SettlementStatusMessage.d.ts +12 -0
- package/bin/moneyTransfer/dtos/SettlementStatusMessage.js +38 -0
- package/bin/moneyTransfer/dtos/TransactionDetailResponse.d.ts +24 -0
- package/bin/moneyTransfer/dtos/TransactionDetailResponse.js +10 -0
- package/bin/moneyTransfer/enums/SettlementModeEnum.d.ts +5 -0
- package/bin/moneyTransfer/enums/SettlementModeEnum.js +9 -0
- package/bin/moneyTransfer/enums/SettlementStatusEnum.d.ts +11 -0
- package/bin/moneyTransfer/enums/SettlementStatusEnum.js +15 -0
- package/bin/moneyTransfer/enums/SpeiOrderStatusEnum.d.ts +11 -0
- package/bin/moneyTransfer/enums/SpeiOrderStatusEnum.js +15 -0
- package/bin/moneyTransfer/enums/TransactionDetailStatusEnum.d.ts +7 -0
- package/bin/moneyTransfer/enums/TransactionDetailStatusEnum.js +11 -0
- package/bin/moneyTransfer/enums/TransferChannelEnum.d.ts +5 -0
- package/bin/moneyTransfer/enums/TransferChannelEnum.js +9 -0
- package/bin/moneyTransfer/index.d.ts +17 -0
- package/bin/moneyTransfer/index.js +40 -0
- package/bin/productCatalog/enums/ProductTypeEnum.d.ts +6 -1
- package/bin/productCatalog/enums/ProductTypeEnum.js +5 -0
- package/bin/provider/enums/Provider.d.ts +2 -1
- package/bin/provider/enums/Provider.js +1 -0
- package/bin/stpSpei/dtos/ConsultStpOrderRequest.d.ts +8 -0
- package/bin/stpSpei/dtos/ConsultStpOrderRequest.js +6 -0
- package/bin/stpSpei/dtos/PutStpOrderRequest.d.ts +16 -8
- package/bin/stpSpei/enums/StpOrderSourceEnum.d.ts +9 -0
- package/bin/stpSpei/enums/StpOrderSourceEnum.js +13 -0
- package/bin/stpSpei/index.d.ts +2 -0
- package/bin/stpSpei/index.js +2 -0
- package/package.json +1 -1
- package/src/bankAccount/enums/BeneficiaryAccountTypeEnum.ts +20 -0
- package/src/bankAccount/index.ts +1 -0
- package/src/index.ts +4 -0
- package/src/moneyTransfer/dtos/BatchScheduleRequest.ts +15 -0
- package/src/moneyTransfer/dtos/CreateSettlementRequest.ts +26 -0
- package/src/moneyTransfer/dtos/MoneyTransferProductRequest.ts +111 -0
- package/src/moneyTransfer/dtos/MoneyTransferServiceCreateRequest.ts +62 -0
- package/src/moneyTransfer/dtos/MoneyTransferServiceUpdateRequest.ts +87 -0
- package/src/moneyTransfer/dtos/PendingDetailsResponse.ts +9 -0
- package/src/moneyTransfer/dtos/RescheduleSettlementRequest.ts +9 -0
- package/src/moneyTransfer/dtos/SettlementActionRequest.ts +7 -0
- package/src/moneyTransfer/dtos/SettlementListResponse.ts +7 -0
- package/src/moneyTransfer/dtos/SettlementResponse.ts +37 -0
- package/src/moneyTransfer/dtos/SettlementStatusMessage.ts +23 -0
- package/src/moneyTransfer/dtos/TransactionDetailResponse.ts +25 -0
- package/src/moneyTransfer/enums/SettlementModeEnum.ts +5 -0
- package/src/moneyTransfer/enums/SettlementStatusEnum.ts +11 -0
- package/src/moneyTransfer/enums/SpeiOrderStatusEnum.ts +11 -0
- package/src/moneyTransfer/enums/TransactionDetailStatusEnum.ts +7 -0
- package/src/moneyTransfer/enums/TransferChannelEnum.ts +5 -0
- package/src/moneyTransfer/index.ts +27 -0
- package/src/productCatalog/enums/ProductTypeEnum.ts +6 -1
- package/src/provider/enums/Provider.ts +2 -1
- package/src/stpSpei/dtos/ConsultStpOrderRequest.ts +9 -0
- package/src/stpSpei/dtos/PutStpOrderRequest.ts +18 -9
- package/src/stpSpei/enums/StpOrderSourceEnum.ts +9 -0
- package/src/stpSpei/index.ts +2 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { plainToInstance } from "class-transformer";
|
|
3
|
+
import { validateSync } from "class-validator";
|
|
4
|
+
import {
|
|
5
|
+
BatchScheduleRequest,
|
|
6
|
+
CreateSettlementRequest,
|
|
7
|
+
MoneyTransferProductRequest,
|
|
8
|
+
MoneyTransferServiceCreateRequest,
|
|
9
|
+
MoneyTransferServiceUpdateRequest,
|
|
10
|
+
RescheduleSettlementRequest,
|
|
11
|
+
SettlementActionRequest,
|
|
12
|
+
SettlementModeEnum,
|
|
13
|
+
SettlementStatusMessage,
|
|
14
|
+
SpeiOrderStatusEnum,
|
|
15
|
+
TransferChannelEnum,
|
|
16
|
+
} from "../../../src/moneyTransfer";
|
|
17
|
+
import { AmountTypeEnum } from "../../../src/servicePayment/enums/AmountTypeEnum";
|
|
18
|
+
import { ReferenceTypeEnum } from "../../../src/servicePayment/enums/ReferenceTypeEnum";
|
|
19
|
+
|
|
20
|
+
const propertiesWithErrors = (dto: object) => validateSync(dto).map((error) => error.property);
|
|
21
|
+
|
|
22
|
+
const VALID_UUID = "3f6c2c5e-8b1a-4f3e-9d2a-1c4b5e6f7a8b";
|
|
23
|
+
|
|
24
|
+
const PRODUCTO_COMPLETO = {
|
|
25
|
+
idProducto: "SPEI-BATCH-001",
|
|
26
|
+
producto: "Dispersión SPEI en lote",
|
|
27
|
+
precio: 0,
|
|
28
|
+
amountType: AmountTypeEnum.VARIABLE,
|
|
29
|
+
fee: 5,
|
|
30
|
+
tipoReferencia: ReferenceTypeEnum.CLIENT_NUMBER,
|
|
31
|
+
verificateReference: false,
|
|
32
|
+
hasDigitoVerificador: false,
|
|
33
|
+
showAyuda: false,
|
|
34
|
+
legend: "",
|
|
35
|
+
logoSrc: "",
|
|
36
|
+
refSrc: "",
|
|
37
|
+
tipoFront: 1,
|
|
38
|
+
idCatTipoServicio: 7,
|
|
39
|
+
enabled: true,
|
|
40
|
+
channel: TransferChannelEnum.SPEI,
|
|
41
|
+
settlementMode: SettlementModeEnum.BATCH,
|
|
42
|
+
beneficiaryName: "ACME SA DE CV",
|
|
43
|
+
beneficiaryRfc: "ACM010101AB1",
|
|
44
|
+
minAmount: 1,
|
|
45
|
+
maxAmount: 50000,
|
|
46
|
+
batchSchedule: { cron: "0 18 * * 1-5", timezone: "America/Mexico_City" },
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const SERVICIO_BASE = {
|
|
50
|
+
idServicio: 90001,
|
|
51
|
+
servicio: "Transferencias ACME",
|
|
52
|
+
categoria: "Transferencias",
|
|
53
|
+
subcategoria: "SPEI",
|
|
54
|
+
categoryOrder: 1,
|
|
55
|
+
subcategoryOrder: 1,
|
|
56
|
+
serviceOrder: 1,
|
|
57
|
+
beneficeId: "ben-1",
|
|
58
|
+
enabled: true,
|
|
59
|
+
currencyId: "MXN",
|
|
60
|
+
serviceCountryId: "MEX",
|
|
61
|
+
logoSrc: "",
|
|
62
|
+
idCatTipoServicio: 7,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
describe("SettlementStatusMessage", () => {
|
|
66
|
+
it("acepta claveRastreo de hasta 30 chars y status del enum", () => {
|
|
67
|
+
const dto = plainToInstance(SettlementStatusMessage, {
|
|
68
|
+
claveRastreo: "A".repeat(30),
|
|
69
|
+
status: SpeiOrderStatusEnum.LQ,
|
|
70
|
+
});
|
|
71
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it("rechaza claveRastreo de más de 30 chars", () => {
|
|
75
|
+
const dto = plainToInstance(SettlementStatusMessage, {
|
|
76
|
+
claveRastreo: "A".repeat(31),
|
|
77
|
+
status: SpeiOrderStatusEnum.LQ,
|
|
78
|
+
});
|
|
79
|
+
expect(propertiesWithErrors(dto)).toContain("claveRastreo");
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("rechaza claveRastreo vacía", () => {
|
|
83
|
+
const dto = plainToInstance(SettlementStatusMessage, { claveRastreo: "", status: SpeiOrderStatusEnum.D });
|
|
84
|
+
expect(propertiesWithErrors(dto)).toContain("claveRastreo");
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("rechaza status fuera del enum", () => {
|
|
88
|
+
const dto = plainToInstance(SettlementStatusMessage, { claveRastreo: "ABC123", status: "LIQUIDADO" });
|
|
89
|
+
expect(propertiesWithErrors(dto)).toContain("status");
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("reason es opcional pero acotado a 256 chars", () => {
|
|
93
|
+
const ok = plainToInstance(SettlementStatusMessage, { claveRastreo: "ABC", status: SpeiOrderStatusEnum.CN });
|
|
94
|
+
expect(validateSync(ok)).toHaveLength(0);
|
|
95
|
+
const largo = plainToInstance(SettlementStatusMessage, {
|
|
96
|
+
claveRastreo: "ABC",
|
|
97
|
+
status: SpeiOrderStatusEnum.CN,
|
|
98
|
+
reason: "x".repeat(257),
|
|
99
|
+
});
|
|
100
|
+
expect(propertiesWithErrors(largo)).toContain("reason");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe("BatchScheduleRequest", () => {
|
|
105
|
+
it("exige cron y timezone no vacíos", () => {
|
|
106
|
+
const dto = plainToInstance(BatchScheduleRequest, { cron: "", timezone: "" });
|
|
107
|
+
const props = propertiesWithErrors(dto);
|
|
108
|
+
expect(props).toContain("cron");
|
|
109
|
+
expect(props).toContain("timezone");
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
describe("MoneyTransferProductRequest", () => {
|
|
114
|
+
it("un producto completo con batchSchedule válido pasa", () => {
|
|
115
|
+
const dto = plainToInstance(MoneyTransferProductRequest, PRODUCTO_COMPLETO);
|
|
116
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
117
|
+
expect(dto.batchSchedule).toBeInstanceOf(BatchScheduleRequest);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it("batchSchedule es opcional", () => {
|
|
121
|
+
const { batchSchedule: _omit, ...sinSchedule } = PRODUCTO_COMPLETO;
|
|
122
|
+
const dto = plainToInstance(MoneyTransferProductRequest, sinSchedule);
|
|
123
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it("rechaza batchSchedule con cron vacío (validación anidada)", () => {
|
|
127
|
+
const dto = plainToInstance(MoneyTransferProductRequest, {
|
|
128
|
+
...PRODUCTO_COMPLETO,
|
|
129
|
+
batchSchedule: { cron: "", timezone: "America/Mexico_City" },
|
|
130
|
+
});
|
|
131
|
+
expect(propertiesWithErrors(dto)).toContain("batchSchedule");
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it("rechaza beneficiaryRfc fuera de 12-13 chars y beneficiaryName > 40", () => {
|
|
135
|
+
const dto = plainToInstance(MoneyTransferProductRequest, {
|
|
136
|
+
...PRODUCTO_COMPLETO,
|
|
137
|
+
beneficiaryRfc: "CORTO",
|
|
138
|
+
beneficiaryName: "N".repeat(41),
|
|
139
|
+
});
|
|
140
|
+
const props = propertiesWithErrors(dto);
|
|
141
|
+
expect(props).toContain("beneficiaryRfc");
|
|
142
|
+
expect(props).toContain("beneficiaryName");
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it("rechaza channel y settlementMode fuera de sus enums", () => {
|
|
146
|
+
const dto = plainToInstance(MoneyTransferProductRequest, {
|
|
147
|
+
...PRODUCTO_COMPLETO,
|
|
148
|
+
channel: "SWIFT",
|
|
149
|
+
settlementMode: "LATER",
|
|
150
|
+
});
|
|
151
|
+
const props = propertiesWithErrors(dto);
|
|
152
|
+
expect(props).toContain("channel");
|
|
153
|
+
expect(props).toContain("settlementMode");
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
describe("MoneyTransferServiceCreateRequest", () => {
|
|
158
|
+
it("un servicio completo con un producto completo pasa", () => {
|
|
159
|
+
const dto = plainToInstance(MoneyTransferServiceCreateRequest, {
|
|
160
|
+
...SERVICIO_BASE,
|
|
161
|
+
productoDTOList: [PRODUCTO_COMPLETO],
|
|
162
|
+
});
|
|
163
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
164
|
+
expect(dto.productoDTOList[0]).toBeInstanceOf(MoneyTransferProductRequest);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
it("con un producto incompleto produce errores de validación anidados", () => {
|
|
168
|
+
const dto = plainToInstance(MoneyTransferServiceCreateRequest, {
|
|
169
|
+
...SERVICIO_BASE,
|
|
170
|
+
productoDTOList: [{ idProducto: "X" }],
|
|
171
|
+
});
|
|
172
|
+
const errors = validateSync(dto);
|
|
173
|
+
const listError = errors.find((error) => error.property === "productoDTOList");
|
|
174
|
+
expect(listError).toBeDefined();
|
|
175
|
+
const nested = listError!.children?.[0]?.children?.map((child) => child.property) ?? [];
|
|
176
|
+
expect(nested).toContain("producto");
|
|
177
|
+
expect(nested).toContain("channel");
|
|
178
|
+
expect(nested).toContain("beneficiaryName");
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("exige al menos un producto", () => {
|
|
182
|
+
const dto = plainToInstance(MoneyTransferServiceCreateRequest, { ...SERVICIO_BASE, productoDTOList: [] });
|
|
183
|
+
expect(propertiesWithErrors(dto)).toContain("productoDTOList");
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("exige idServicio >= 90000 y currencyId de 3 chars", () => {
|
|
187
|
+
const dto = plainToInstance(MoneyTransferServiceCreateRequest, {
|
|
188
|
+
...SERVICIO_BASE,
|
|
189
|
+
idServicio: 100,
|
|
190
|
+
currencyId: "MXNN",
|
|
191
|
+
productoDTOList: [PRODUCTO_COMPLETO],
|
|
192
|
+
});
|
|
193
|
+
const props = propertiesWithErrors(dto);
|
|
194
|
+
expect(props).toContain("idServicio");
|
|
195
|
+
expect(props).toContain("currencyId");
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
describe("MoneyTransferServiceUpdateRequest", () => {
|
|
200
|
+
it("acepta un payload vacío (todos los campos opcionales)", () => {
|
|
201
|
+
const dto = plainToInstance(MoneyTransferServiceUpdateRequest, {});
|
|
202
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("valida el producto anidado cuando viene productoDTOList", () => {
|
|
206
|
+
const dto = plainToInstance(MoneyTransferServiceUpdateRequest, {
|
|
207
|
+
productoDTOList: [{ idProducto: "X" }],
|
|
208
|
+
});
|
|
209
|
+
expect(propertiesWithErrors(dto)).toContain("productoDTOList");
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it("sigue validando el tipo de los campos presentes", () => {
|
|
213
|
+
const dto = plainToInstance(MoneyTransferServiceUpdateRequest, { idServicio: 100, enabled: "si" });
|
|
214
|
+
const props = propertiesWithErrors(dto);
|
|
215
|
+
expect(props).toContain("idServicio");
|
|
216
|
+
expect(props).toContain("enabled");
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
describe("CreateSettlementRequest", () => {
|
|
221
|
+
it("acepta idempotencyKey UUID, ≥1 folio y sendNow", () => {
|
|
222
|
+
const dto = plainToInstance(CreateSettlementRequest, {
|
|
223
|
+
idempotencyKey: VALID_UUID,
|
|
224
|
+
transactionNumbers: ["TX-1", "TX-2"],
|
|
225
|
+
sendNow: true,
|
|
226
|
+
});
|
|
227
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
it("rechaza idempotencyKey que no es UUID", () => {
|
|
231
|
+
const dto = plainToInstance(CreateSettlementRequest, {
|
|
232
|
+
idempotencyKey: "no-uuid",
|
|
233
|
+
transactionNumbers: ["TX-1"],
|
|
234
|
+
sendNow: false,
|
|
235
|
+
});
|
|
236
|
+
expect(propertiesWithErrors(dto)).toContain("idempotencyKey");
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
it("rechaza transactionNumbers vacío", () => {
|
|
240
|
+
const dto = plainToInstance(CreateSettlementRequest, {
|
|
241
|
+
idempotencyKey: VALID_UUID,
|
|
242
|
+
transactionNumbers: [],
|
|
243
|
+
sendNow: false,
|
|
244
|
+
});
|
|
245
|
+
expect(propertiesWithErrors(dto)).toContain("transactionNumbers");
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it("rechaza más de 1000 folios y elementos no string", () => {
|
|
249
|
+
const muchos = plainToInstance(CreateSettlementRequest, {
|
|
250
|
+
idempotencyKey: VALID_UUID,
|
|
251
|
+
transactionNumbers: Array.from({ length: 1001 }, (_, i) => `TX-${i}`),
|
|
252
|
+
sendNow: false,
|
|
253
|
+
});
|
|
254
|
+
expect(propertiesWithErrors(muchos)).toContain("transactionNumbers");
|
|
255
|
+
const noString = plainToInstance(CreateSettlementRequest, {
|
|
256
|
+
idempotencyKey: VALID_UUID,
|
|
257
|
+
transactionNumbers: [123],
|
|
258
|
+
sendNow: false,
|
|
259
|
+
});
|
|
260
|
+
expect(propertiesWithErrors(noString)).toContain("transactionNumbers");
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("scheduledAt es opcional, entero y >= 0", () => {
|
|
264
|
+
const dto = plainToInstance(CreateSettlementRequest, {
|
|
265
|
+
idempotencyKey: VALID_UUID,
|
|
266
|
+
transactionNumbers: ["TX-1"],
|
|
267
|
+
sendNow: false,
|
|
268
|
+
scheduledAt: -1,
|
|
269
|
+
});
|
|
270
|
+
expect(propertiesWithErrors(dto)).toContain("scheduledAt");
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
describe("SettlementActionRequest / RescheduleSettlementRequest", () => {
|
|
275
|
+
it("SettlementActionRequest exige idempotencyKey UUID", () => {
|
|
276
|
+
expect(propertiesWithErrors(plainToInstance(SettlementActionRequest, { idempotencyKey: "x" }))).toContain(
|
|
277
|
+
"idempotencyKey",
|
|
278
|
+
);
|
|
279
|
+
expect(validateSync(plainToInstance(SettlementActionRequest, { idempotencyKey: VALID_UUID }))).toHaveLength(0);
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
it("RescheduleSettlementRequest hereda idempotencyKey y exige scheduledAt entero >= 0", () => {
|
|
283
|
+
const dto = plainToInstance(RescheduleSettlementRequest, { idempotencyKey: "x", scheduledAt: 1.5 });
|
|
284
|
+
const props = propertiesWithErrors(dto);
|
|
285
|
+
expect(props).toContain("idempotencyKey");
|
|
286
|
+
expect(props).toContain("scheduledAt");
|
|
287
|
+
const ok = plainToInstance(RescheduleSettlementRequest, { idempotencyKey: VALID_UUID, scheduledAt: 0 });
|
|
288
|
+
expect(validateSync(ok)).toHaveLength(0);
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
describe("MoneyTransferServiceUpdateRequest — productoDTOList vacía", () => {
|
|
293
|
+
it("rechaza productoDTOList: [] (reemplaza la lista completa; no puede quedar vacía)", () => {
|
|
294
|
+
const dto = plainToInstance(MoneyTransferServiceUpdateRequest, { productoDTOList: [] });
|
|
295
|
+
const errors = validateSync(dto);
|
|
296
|
+
expect(errors.map(e => e.property)).toContain("productoDTOList");
|
|
297
|
+
});
|
|
298
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import {
|
|
3
|
+
SettlementModeEnum,
|
|
4
|
+
SettlementStatusEnum,
|
|
5
|
+
SpeiOrderStatusEnum,
|
|
6
|
+
TransactionDetailStatusEnum,
|
|
7
|
+
TransferChannelEnum,
|
|
8
|
+
} from "../../../src/moneyTransfer";
|
|
9
|
+
|
|
10
|
+
describe("moneyTransfer enums", () => {
|
|
11
|
+
it("TransferChannelEnum tiene SPEI y ACH con valores string estables", () => {
|
|
12
|
+
expect(TransferChannelEnum.SPEI).toBe("SPEI");
|
|
13
|
+
expect(TransferChannelEnum.ACH).toBe("ACH");
|
|
14
|
+
expect(Object.values(TransferChannelEnum).sort()).toEqual(["ACH", "SPEI"]);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("SettlementModeEnum tiene IMMEDIATE y BATCH", () => {
|
|
18
|
+
expect(SettlementModeEnum.IMMEDIATE).toBe("IMMEDIATE");
|
|
19
|
+
expect(SettlementModeEnum.BATCH).toBe("BATCH");
|
|
20
|
+
expect(Object.values(SettlementModeEnum).sort()).toEqual(["BATCH", "IMMEDIATE"]);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("SettlementStatusEnum tiene exactamente los 8 estados del ciclo de vida", () => {
|
|
24
|
+
expect(Object.values(SettlementStatusEnum).sort()).toEqual([
|
|
25
|
+
"CANCELLED",
|
|
26
|
+
"CREATED",
|
|
27
|
+
"FAILED",
|
|
28
|
+
"RETURNED",
|
|
29
|
+
"SCHEDULED",
|
|
30
|
+
"SENDING",
|
|
31
|
+
"SENT",
|
|
32
|
+
"SETTLED",
|
|
33
|
+
]);
|
|
34
|
+
expect(SettlementStatusEnum.CREATED).toBe("CREATED");
|
|
35
|
+
expect(SettlementStatusEnum.SETTLED).toBe("SETTLED");
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("TransactionDetailStatusEnum tiene los 4 estados del detalle", () => {
|
|
39
|
+
expect(Object.values(TransactionDetailStatusEnum).sort()).toEqual([
|
|
40
|
+
"FAILED",
|
|
41
|
+
"PENDING_SETTLEMENT",
|
|
42
|
+
"RETURNED",
|
|
43
|
+
"SETTLED",
|
|
44
|
+
]);
|
|
45
|
+
expect(TransactionDetailStatusEnum.PENDING_SETTLEMENT).toBe("PENDING_SETTLEMENT");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("SpeiOrderStatusEnum refleja los códigos de STP más PENDING/UNKNOWN", () => {
|
|
49
|
+
expect(SpeiOrderStatusEnum.LQ).toBe("LQ");
|
|
50
|
+
expect(SpeiOrderStatusEnum.D).toBe("D");
|
|
51
|
+
expect(SpeiOrderStatusEnum.CN).toBe("CN");
|
|
52
|
+
expect(SpeiOrderStatusEnum.PENDING).toBe("PENDING");
|
|
53
|
+
expect(SpeiOrderStatusEnum.UNKNOWN).toBe("UNKNOWN");
|
|
54
|
+
expect(Object.values(SpeiOrderStatusEnum).sort()).toEqual(["CN", "D", "LQ", "PENDING", "UNKNOWN"]);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { Provider } from "../../../src/provider/enums/Provider";
|
|
3
|
+
import { ProductTypeEnum } from "../../../src/productCatalog/enums/ProductTypeEnum";
|
|
4
|
+
import {
|
|
5
|
+
BusinessNameEnum,
|
|
6
|
+
ConsultStpOrderRequest,
|
|
7
|
+
PutStpOrderRequest,
|
|
8
|
+
StpOrderSourceEnum,
|
|
9
|
+
} from "../../../src/stpSpei";
|
|
10
|
+
|
|
11
|
+
describe("stpSpei — cambios aditivos para money-transfer-connector (DEC-013 / DEC-037)", () => {
|
|
12
|
+
it("Provider expone MONEY_TRANSFER", () => {
|
|
13
|
+
expect(Provider.MONEY_TRANSFER).toBe("MONEY_TRANSFER");
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("ProductTypeEnum expone MONEY_TRANSFER_SA", () => {
|
|
17
|
+
expect(ProductTypeEnum.MONEY_TRANSFER_SA).toBe("MONEY_TRANSFER_SA");
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("StpOrderSourceEnum expone USER_TRANSFER y BENEFITS_SETTLEMENT", () => {
|
|
21
|
+
expect(StpOrderSourceEnum.USER_TRANSFER).toBe("USER_TRANSFER");
|
|
22
|
+
expect(StpOrderSourceEnum.BENEFITS_SETTLEMENT).toBe("BENEFITS_SETTLEMENT");
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("PutStpOrderRequest compila sin los campos de usuario y acepta source + beneficiaryRfc", () => {
|
|
26
|
+
const request: PutStpOrderRequest = {
|
|
27
|
+
amount: 150.5,
|
|
28
|
+
transactionNumber: "TX-0001",
|
|
29
|
+
numericReference: 1234567,
|
|
30
|
+
concept: "Liquidación de beneficios",
|
|
31
|
+
beneficiaryAccount: "646180110400000007",
|
|
32
|
+
beneficiaryName: "EMPRESA SA DE CV",
|
|
33
|
+
bankCode: "90646",
|
|
34
|
+
source: StpOrderSourceEnum.BENEFITS_SETTLEMENT,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
expect(request.source).toBe("BENEFITS_SETTLEMENT");
|
|
38
|
+
expect(request.directoryId).toBeUndefined();
|
|
39
|
+
expect(request.beneficiaryRfc).toBeUndefined();
|
|
40
|
+
|
|
41
|
+
const withRfc: PutStpOrderRequest = { ...request, beneficiaryRfc: "XAXX010101000" };
|
|
42
|
+
expect(withRfc.beneficiaryRfc).toBe("XAXX010101000");
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("PutStpOrderRequest sigue aceptando el shape completo actual (USER_TRANSFER)", () => {
|
|
46
|
+
const request: PutStpOrderRequest = {
|
|
47
|
+
processorObject: null,
|
|
48
|
+
directoryId: "dir-1",
|
|
49
|
+
phoneNumber: "+525500000000",
|
|
50
|
+
indexName: "idx",
|
|
51
|
+
amount: 10,
|
|
52
|
+
transactionNumber: "TX-0002",
|
|
53
|
+
numericReference: 1,
|
|
54
|
+
concept: null,
|
|
55
|
+
beneficiaryAccount: "646180110400000007",
|
|
56
|
+
beneficiaryName: "JUAN PEREZ",
|
|
57
|
+
bankName: "STP",
|
|
58
|
+
bankCode: "90646",
|
|
59
|
+
originatorAccountNumber: "646180110400000008",
|
|
60
|
+
originatorCurp: "XAXX010101HDFXXX01",
|
|
61
|
+
originatorName: "FIADO",
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
expect(request.source).toBeUndefined();
|
|
65
|
+
expect(request.transactionNumber).toBe("TX-0002");
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("ConsultStpOrderRequest acepta businessName opcional (DEC-037)", () => {
|
|
69
|
+
const sinEmpresa: ConsultStpOrderRequest = {
|
|
70
|
+
transactionNumber: "TX-0003",
|
|
71
|
+
orderType: "E",
|
|
72
|
+
operationDate: "20260924",
|
|
73
|
+
};
|
|
74
|
+
expect(sinEmpresa.businessName).toBeUndefined();
|
|
75
|
+
|
|
76
|
+
const conEmpresa: ConsultStpOrderRequest = {
|
|
77
|
+
...sinEmpresa,
|
|
78
|
+
orderType: "R",
|
|
79
|
+
businessName: BusinessNameEnum.PAGO_CONFIADO,
|
|
80
|
+
};
|
|
81
|
+
expect(conEmpresa.businessName).toBe("PAGO_CONFIADO");
|
|
82
|
+
expect(conEmpresa.orderType).toBe("R");
|
|
83
|
+
});
|
|
84
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipo de identificador con el que se reconoce la cuenta destino de una
|
|
3
|
+
* transferencia SPEI.
|
|
4
|
+
*
|
|
5
|
+
* Banxico admite tres (Circular 17/2010) y STP los distingue con el campo
|
|
6
|
+
* `tipoCuentaBeneficiario` del servicio registraOrden. El valor numerico de
|
|
7
|
+
* cada uno vive en el lambda que arma la orden; aqui solo se nombra el
|
|
8
|
+
* concepto.
|
|
9
|
+
*
|
|
10
|
+
* No confundir con `ExternalAccountTypeEnum`, que describe la naturaleza de la
|
|
11
|
+
* cuenta (cheques, ahorro), no como se identifica.
|
|
12
|
+
*/
|
|
13
|
+
export declare enum BeneficiaryAccountTypeEnum {
|
|
14
|
+
/** CLABE de 18 digitos, con digito verificador Banxico. */
|
|
15
|
+
CLABE = "CLABE",
|
|
16
|
+
/** Numero de tarjeta de debito de 16 digitos, con verificacion Luhn. */
|
|
17
|
+
DEBIT_CARD = "DEBIT_CARD",
|
|
18
|
+
/** Linea movil de 10 digitos. Sin verificador: habilitar con cuidado. */
|
|
19
|
+
MOBILE_PHONE = "MOBILE_PHONE"
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BeneficiaryAccountTypeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Tipo de identificador con el que se reconoce la cuenta destino de una
|
|
6
|
+
* transferencia SPEI.
|
|
7
|
+
*
|
|
8
|
+
* Banxico admite tres (Circular 17/2010) y STP los distingue con el campo
|
|
9
|
+
* `tipoCuentaBeneficiario` del servicio registraOrden. El valor numerico de
|
|
10
|
+
* cada uno vive en el lambda que arma la orden; aqui solo se nombra el
|
|
11
|
+
* concepto.
|
|
12
|
+
*
|
|
13
|
+
* No confundir con `ExternalAccountTypeEnum`, que describe la naturaleza de la
|
|
14
|
+
* cuenta (cheques, ahorro), no como se identifica.
|
|
15
|
+
*/
|
|
16
|
+
var BeneficiaryAccountTypeEnum;
|
|
17
|
+
(function (BeneficiaryAccountTypeEnum) {
|
|
18
|
+
/** CLABE de 18 digitos, con digito verificador Banxico. */
|
|
19
|
+
BeneficiaryAccountTypeEnum["CLABE"] = "CLABE";
|
|
20
|
+
/** Numero de tarjeta de debito de 16 digitos, con verificacion Luhn. */
|
|
21
|
+
BeneficiaryAccountTypeEnum["DEBIT_CARD"] = "DEBIT_CARD";
|
|
22
|
+
/** Linea movil de 10 digitos. Sin verificador: habilitar con cuidado. */
|
|
23
|
+
BeneficiaryAccountTypeEnum["MOBILE_PHONE"] = "MOBILE_PHONE";
|
|
24
|
+
})(BeneficiaryAccountTypeEnum || (exports.BeneficiaryAccountTypeEnum = BeneficiaryAccountTypeEnum = {}));
|
|
@@ -4,6 +4,7 @@ export * from './dtos/GetExternalBankAccountResponse';
|
|
|
4
4
|
export * from './dtos/GetExternalBankResponse';
|
|
5
5
|
export * from './dtos/CreateExternalBankAccountRequest';
|
|
6
6
|
export * from './dtos/CreateExternalBankAccountResponse';
|
|
7
|
+
export * from './enums/BeneficiaryAccountTypeEnum';
|
|
7
8
|
export * from './enums/ExternalAccountOwnershipEnum';
|
|
8
9
|
export * from './enums/ExternalAccountStatusEnum';
|
|
9
10
|
export * from './enums/ExternalAccountTypeEnum';
|
package/bin/bankAccount/index.js
CHANGED
|
@@ -20,6 +20,7 @@ __exportStar(require("./dtos/GetExternalBankAccountResponse"), exports);
|
|
|
20
20
|
__exportStar(require("./dtos/GetExternalBankResponse"), exports);
|
|
21
21
|
__exportStar(require("./dtos/CreateExternalBankAccountRequest"), exports);
|
|
22
22
|
__exportStar(require("./dtos/CreateExternalBankAccountResponse"), exports);
|
|
23
|
+
__exportStar(require("./enums/BeneficiaryAccountTypeEnum"), exports);
|
|
23
24
|
__exportStar(require("./enums/ExternalAccountOwnershipEnum"), exports);
|
|
24
25
|
__exportStar(require("./enums/ExternalAccountStatusEnum"), exports);
|
|
25
26
|
__exportStar(require("./enums/ExternalAccountTypeEnum"), 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.IssuanceBusiness = exports.Blacklist = 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.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = 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.DatalakeQuery = exports.RetailWizard = exports.RetailCustomer = 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.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 = void 0;
|
|
41
|
-
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 = void 0;
|
|
41
|
+
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 = void 0;
|
|
42
42
|
exports.Crypto = __importStar(require("./crypto"));
|
|
43
43
|
exports.Account = __importStar(require("./account"));
|
|
44
44
|
exports.MetamapConnector = __importStar(require("./metamapConnector"));
|
|
@@ -222,3 +222,7 @@ exports.Membership = __importStar(require("./membership"));
|
|
|
222
222
|
// RetailLoan: contrato público de retail-loan-business (I1), la puerta de la App Fiado
|
|
223
223
|
// hacia las suites FiadoLend/FiadoRetail. Montos en pesos; el lambda convierte desde centavos.
|
|
224
224
|
exports.RetailLoan = __importStar(require("./retailLoan"));
|
|
225
|
+
// MoneyTransfer: contrato del money-transfer-connector (Centro de Beneficios) — catálogo de
|
|
226
|
+
// servicios/productos con riel SPEI/ACH y liquidación inmediata o en lote, liquidaciones
|
|
227
|
+
// (settlements) y estado de órdenes SPEI. Reusa AmountTypeEnum/ReferenceTypeEnum de servicePayment.
|
|
228
|
+
exports.MoneyTransfer = __importStar(require("./moneyTransfer"));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Programación del lote para productos con `settlementMode = BATCH`. */
|
|
2
|
+
export declare class BatchScheduleRequest {
|
|
3
|
+
/** Expresión cron (5 campos) evaluada en `timezone`. */
|
|
4
|
+
cron: string;
|
|
5
|
+
/** Zona horaria IANA, ej. `America/Mexico_City`. */
|
|
6
|
+
timezone: string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
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.BatchScheduleRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/** Programación del lote para productos con `settlementMode = BATCH`. */
|
|
15
|
+
class BatchScheduleRequest {
|
|
16
|
+
}
|
|
17
|
+
exports.BatchScheduleRequest = BatchScheduleRequest;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
21
|
+
(0, class_validator_1.MaxLength)(64),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], BatchScheduleRequest.prototype, "cron", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsString)(),
|
|
26
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], BatchScheduleRequest.prototype, "timezone", void 0);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crea una liquidación agrupando folios pendientes (`transactionNumbers`) de un mismo producto.
|
|
3
|
+
* `sendNow = true` la envía al riel de inmediato; en caso contrario queda en `CREATED` o
|
|
4
|
+
* `SCHEDULED` (si viene `scheduledAt`, epoch ms).
|
|
5
|
+
*/
|
|
6
|
+
export declare class CreateSettlementRequest {
|
|
7
|
+
idempotencyKey: string;
|
|
8
|
+
transactionNumbers: string[];
|
|
9
|
+
sendNow: boolean;
|
|
10
|
+
/** Epoch ms del envío programado. */
|
|
11
|
+
scheduledAt?: number;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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.CreateSettlementRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* Crea una liquidación agrupando folios pendientes (`transactionNumbers`) de un mismo producto.
|
|
16
|
+
* `sendNow = true` la envía al riel de inmediato; en caso contrario queda en `CREATED` o
|
|
17
|
+
* `SCHEDULED` (si viene `scheduledAt`, epoch ms).
|
|
18
|
+
*/
|
|
19
|
+
class CreateSettlementRequest {
|
|
20
|
+
}
|
|
21
|
+
exports.CreateSettlementRequest = CreateSettlementRequest;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_validator_1.IsUUID)(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], CreateSettlementRequest.prototype, "idempotencyKey", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_validator_1.IsArray)(),
|
|
28
|
+
(0, class_validator_1.ArrayMinSize)(1),
|
|
29
|
+
(0, class_validator_1.ArrayMaxSize)(1000),
|
|
30
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
31
|
+
__metadata("design:type", Array)
|
|
32
|
+
], CreateSettlementRequest.prototype, "transactionNumbers", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsBoolean)(),
|
|
35
|
+
__metadata("design:type", Boolean)
|
|
36
|
+
], CreateSettlementRequest.prototype, "sendNow", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsInt)(),
|
|
40
|
+
(0, class_validator_1.Min)(0),
|
|
41
|
+
__metadata("design:type", Number)
|
|
42
|
+
], CreateSettlementRequest.prototype, "scheduledAt", void 0);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AmountTypeEnum } from "../../servicePayment/enums/AmountTypeEnum";
|
|
2
|
+
import { ReferenceTypeEnum } from "../../servicePayment/enums/ReferenceTypeEnum";
|
|
3
|
+
import { SettlementModeEnum } from "../enums/SettlementModeEnum";
|
|
4
|
+
import { TransferChannelEnum } from "../enums/TransferChannelEnum";
|
|
5
|
+
import { BatchScheduleRequest } from "./BatchScheduleRequest";
|
|
6
|
+
/**
|
|
7
|
+
* Producto de un servicio de transferencia de dinero (Centro de Beneficios). Los campos en
|
|
8
|
+
* español espejan el catálogo legacy de pago de servicios; los campos en inglés son la
|
|
9
|
+
* configuración propia del riel (canal, modo de liquidación, beneficiario, lote).
|
|
10
|
+
*/
|
|
11
|
+
export declare class MoneyTransferProductRequest {
|
|
12
|
+
idProducto: string;
|
|
13
|
+
producto: string;
|
|
14
|
+
precio: number;
|
|
15
|
+
amountType: AmountTypeEnum;
|
|
16
|
+
fee: number;
|
|
17
|
+
tipoReferencia: ReferenceTypeEnum;
|
|
18
|
+
verificateReference: boolean;
|
|
19
|
+
hasDigitoVerificador: boolean;
|
|
20
|
+
showAyuda: boolean;
|
|
21
|
+
legend: string;
|
|
22
|
+
logoSrc: string;
|
|
23
|
+
refSrc: string;
|
|
24
|
+
tipoFront: number;
|
|
25
|
+
idCatTipoServicio: number;
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
channel: TransferChannelEnum;
|
|
28
|
+
settlementMode: SettlementModeEnum;
|
|
29
|
+
/** Nombre del beneficiario tal como viaja al riel (SPEI acepta máx. 40 chars). */
|
|
30
|
+
beneficiaryName: string;
|
|
31
|
+
/** RFC del beneficiario: 12 chars persona moral, 13 persona física. */
|
|
32
|
+
beneficiaryRfc?: string;
|
|
33
|
+
minAmount?: number;
|
|
34
|
+
maxAmount?: number;
|
|
35
|
+
/** Requerido operativamente cuando `settlementMode = BATCH`; lo valida el conector. */
|
|
36
|
+
batchSchedule?: BatchScheduleRequest;
|
|
37
|
+
}
|