@fiado/type-kit 3.622.0 → 3.624.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/card/WalletProvisioningRequest.test.ts +10 -0
- package/_test_/unit/reconciliation/m8EngineBatch.test.ts +81 -0
- package/bin/card/dtos/WalletProvisioningRequest.d.ts +2 -0
- package/bin/card/dtos/WalletProvisioningRequest.js +13 -1
- package/bin/reconciliation/constants/reconciliationErrorHttpStatus.js +3 -0
- package/bin/reconciliation/constants/reconciliationValidation.d.ts +8 -0
- package/bin/reconciliation/constants/reconciliationValidation.js +9 -1
- package/bin/reconciliation/dtos/ReconciliationDefinition.d.ts +9 -0
- package/bin/reconciliation/dtos/requests/ReconciliationActionRequests.d.ts +9 -0
- package/bin/reconciliation/dtos/requests/ReconciliationActionRequests.js +43 -1
- package/bin/reconciliation/dtos/requests/ReconciliationQueries.d.ts +2 -0
- package/bin/reconciliation/dtos/requests/ReconciliationQueries.js +7 -0
- package/bin/reconciliation/enums/ReconciliationErrorCodeEnum.d.ts +7 -1
- package/bin/reconciliation/enums/ReconciliationErrorCodeEnum.js +6 -0
- package/bin/reconciliation/enums/ReconciliationResolutionArchiveReasonEnum.d.ts +5 -1
- package/bin/reconciliation/enums/ReconciliationResolutionArchiveReasonEnum.js +4 -0
- package/package.json +1 -1
- package/src/card/dtos/WalletProvisioningRequest.ts +14 -2
- package/src/reconciliation/constants/reconciliationErrorHttpStatus.ts +3 -0
- package/src/reconciliation/constants/reconciliationValidation.ts +12 -0
- package/src/reconciliation/dtos/ReconciliationDefinition.ts +10 -0
- package/src/reconciliation/dtos/requests/ReconciliationActionRequests.ts +60 -2
- package/src/reconciliation/dtos/requests/ReconciliationQueries.ts +6 -0
- package/src/reconciliation/enums/ReconciliationErrorCodeEnum.ts +6 -0
- package/src/reconciliation/enums/ReconciliationResolutionArchiveReasonEnum.ts +4 -0
|
@@ -25,6 +25,16 @@ describe('WalletProvisioningRequest', () => {
|
|
|
25
25
|
expect(await errorsOf(WalletProvisioningRequest, { wallet: 'GOOGLE_PAY', google: { serverSessionId: 'ssid' } })).toHaveLength(0);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
+
it('Google con deviceId y walletAccountId (Visa) es válido', async () => {
|
|
29
|
+
const body = { wallet: 'GOOGLE_PAY', google: { serverSessionId: 'ssid', deviceId: 'dev-1', walletAccountId: 'wal-1' } };
|
|
30
|
+
expect(await errorsOf(WalletProvisioningRequest, body)).toHaveLength(0);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('Google con deviceId vacío es inválido', async () => {
|
|
34
|
+
const body = { wallet: 'GOOGLE_PAY', google: { serverSessionId: 'ssid', deviceId: '' } };
|
|
35
|
+
expect((await errorsOf(WalletProvisioningRequest, body)).length).toBeGreaterThan(0);
|
|
36
|
+
});
|
|
37
|
+
|
|
28
38
|
it('Google sin serverSessionId es inválido', async () => {
|
|
29
39
|
expect((await errorsOf(WalletProvisioningRequest, { wallet: 'GOOGLE_PAY', google: {} })).length).toBeGreaterThan(0);
|
|
30
40
|
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import * as Reconciliation from '../../../src/reconciliation';
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
ConfigureReconciliationDefinitionRequest,
|
|
8
|
+
PrivateConfigureReconciliationDefinitionRequest,
|
|
9
|
+
ListReconciliationItemsQuery,
|
|
10
|
+
PrivateListReconciliationItemsQuery,
|
|
11
|
+
ReconciliationResolutionStatusEnum,
|
|
12
|
+
ReconciliationResolutionArchiveReasonEnum: AR,
|
|
13
|
+
ReconciliationErrorCodeEnum: RC,
|
|
14
|
+
RECONCILIATION_ERROR_HTTP_STATUS,
|
|
15
|
+
} = Reconciliation;
|
|
16
|
+
|
|
17
|
+
function errorsOf<T extends object>(cls: new () => T, payload: Record<string, unknown>): string[] {
|
|
18
|
+
const dto = plainToInstance(cls, payload, { excludeExtraneousValues: true });
|
|
19
|
+
return validateSync(dto).map((e) => e.property);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const operator = { tenantId: 'surekeep', author: 'conciliacion-dashboard', actorId: 'aZ3x9Qk-azure-ad-sub_01' };
|
|
23
|
+
|
|
24
|
+
describe('resolutionStatus en la lista de partidas', () => {
|
|
25
|
+
it.each([
|
|
26
|
+
[ListReconciliationItemsQuery, { definitionId: 'd1' }],
|
|
27
|
+
[PrivateListReconciliationItemsQuery, { definitionId: 'd1', ...operator }],
|
|
28
|
+
])('%p acepta el enum y rechaza otro valor', (cls, base) => {
|
|
29
|
+
const ok = plainToInstance(cls as never, { ...base, resolutionStatus: 'ADJUSTED' }, { excludeExtraneousValues: true }) as { resolutionStatus?: string };
|
|
30
|
+
expect(ok.resolutionStatus).toBe(ReconciliationResolutionStatusEnum.ADJUSTED);
|
|
31
|
+
expect(errorsOf(cls as never, { ...base, resolutionStatus: 'ADJUSTED' })).toEqual([]);
|
|
32
|
+
expect(errorsOf(cls as never, base)).toEqual([]);
|
|
33
|
+
expect(errorsOf(cls as never, { ...base, resolutionStatus: 'NOPE' })).toEqual(['resolutionStatus']);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('ajustes de banco en configurar definición', () => {
|
|
38
|
+
const accounts = [{ bank: 'BANORTE', account: '0123_45-6' }];
|
|
39
|
+
it.each([
|
|
40
|
+
[ConfigureReconciliationDefinitionRequest, { status: 'ACTIVE' }],
|
|
41
|
+
[PrivateConfigureReconciliationDefinitionRequest, { status: 'ACTIVE', ...operator }],
|
|
42
|
+
])('%p valida los tres campos', (cls, base) => {
|
|
43
|
+
const ok = { ...base, bankAccounts: accounts, statementGraceBusinessDays: 30, fillPayeeConfirmationOnCredit: true };
|
|
44
|
+
expect(errorsOf(cls as never, ok)).toEqual([]);
|
|
45
|
+
expect(errorsOf(cls as never, base)).toEqual([]);
|
|
46
|
+
const dto = plainToInstance(cls as never, ok, { excludeExtraneousValues: true }) as { bankAccounts?: object[] };
|
|
47
|
+
expect(dto.bankAccounts?.[0]).toEqual(accounts[0]);
|
|
48
|
+
expect(errorsOf(cls as never, { ...base, bankAccounts: [{ bank: 'BAN/ORTE', account: '1' }] })).toEqual(['bankAccounts']);
|
|
49
|
+
expect(errorsOf(cls as never, { ...base, bankAccounts: [{ bank: 'B', account: 'x'.repeat(129) }] })).toEqual(['bankAccounts']);
|
|
50
|
+
expect(errorsOf(cls as never, { ...base, bankAccounts: Array.from({ length: 11 }, (_, i) => ({ bank: 'B', account: `${i}` })) })).toEqual(['bankAccounts']);
|
|
51
|
+
expect(errorsOf(cls as never, { ...base, statementGraceBusinessDays: 31 })).toEqual(['statementGraceBusinessDays']);
|
|
52
|
+
expect(errorsOf(cls as never, { ...base, statementGraceBusinessDays: -1 })).toEqual(['statementGraceBusinessDays']);
|
|
53
|
+
expect(errorsOf(cls as never, { ...base, fillPayeeConfirmationOnCredit: 'yes' })).toEqual(['fillPayeeConfirmationOnCredit']);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('la respuesta de definición admite los ajustes de banco', () => {
|
|
57
|
+
const settings: Pick<Reconciliation.ReconciliationDefinition, 'bankAccounts' | 'statementGraceBusinessDays' | 'fillPayeeConfirmationOnCredit'> = {
|
|
58
|
+
bankAccounts: [{ bank: 'BANORTE', account: '1' }],
|
|
59
|
+
statementGraceBusinessDays: 3,
|
|
60
|
+
fillPayeeConfirmationOnCredit: false,
|
|
61
|
+
};
|
|
62
|
+
expect(settings.bankAccounts).toHaveLength(1);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('motivos de archivo nuevos', () => {
|
|
67
|
+
it.each(['SUPERSEDED', 'ADJUSTMENT_REJECTED'])('%s existe', (reason) => {
|
|
68
|
+
expect(Object.values(AR)).toContain(reason);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe('codes nuevos del motor con su status', () => {
|
|
73
|
+
it.each([
|
|
74
|
+
['ADJUSTMENT_NEEDS_REVIEW', 409],
|
|
75
|
+
['ADJUSTMENT_REFERENCE_MISSING', 422],
|
|
76
|
+
['BANK_ACCOUNTS_NOT_CONFIGURED', 409],
|
|
77
|
+
])('%s responde %d', (code, status) => {
|
|
78
|
+
expect(Object.values(RC)).toContain(code);
|
|
79
|
+
expect(RECONCILIATION_ERROR_HTTP_STATUS[code as Reconciliation.ReconciliationErrorCodeEnum]).toBe(status);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -6,6 +6,8 @@ export declare class AppleWalletProvisioningData {
|
|
|
6
6
|
}
|
|
7
7
|
export declare class GoogleWalletProvisioningData {
|
|
8
8
|
serverSessionId: string;
|
|
9
|
+
deviceId?: string;
|
|
10
|
+
walletAccountId?: string;
|
|
9
11
|
}
|
|
10
12
|
export declare class WalletProvisioningRequest {
|
|
11
13
|
wallet: WalletProvider;
|
|
@@ -33,7 +33,7 @@ __decorate([
|
|
|
33
33
|
(0, class_validator_1.IsNotEmpty)(),
|
|
34
34
|
__metadata("design:type", String)
|
|
35
35
|
], AppleWalletProvisioningData.prototype, "nonceSignature", void 0);
|
|
36
|
-
//
|
|
36
|
+
// Datos que entrega el SDK TapAndPay de Google a la app (PaymentCredentialsGenerator.generate).
|
|
37
37
|
class GoogleWalletProvisioningData {
|
|
38
38
|
}
|
|
39
39
|
exports.GoogleWalletProvisioningData = GoogleWalletProvisioningData;
|
|
@@ -42,6 +42,18 @@ __decorate([
|
|
|
42
42
|
(0, class_validator_1.IsNotEmpty)(),
|
|
43
43
|
__metadata("design:type", String)
|
|
44
44
|
], GoogleWalletProvisioningData.prototype, "serverSessionId", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsString)(),
|
|
48
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], GoogleWalletProvisioningData.prototype, "deviceId", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsString)(),
|
|
54
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], GoogleWalletProvisioningData.prototype, "walletAccountId", void 0);
|
|
45
57
|
class WalletProvisioningRequest {
|
|
46
58
|
}
|
|
47
59
|
exports.WalletProvisioningRequest = WalletProvisioningRequest;
|
|
@@ -24,6 +24,9 @@ exports.RECONCILIATION_ERROR_HTTP_STATUS = {
|
|
|
24
24
|
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.RUN_DISPATCH_FAILED]: 502,
|
|
25
25
|
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.BANK_STATEMENT_UNAVAILABLE]: 502,
|
|
26
26
|
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.INVALID_SEED_TENANT]: 400,
|
|
27
|
+
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.ADJUSTMENT_NEEDS_REVIEW]: 409,
|
|
28
|
+
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.ADJUSTMENT_REFERENCE_MISSING]: 422,
|
|
29
|
+
[ReconciliationErrorCodeEnum_1.ReconciliationErrorCodeEnum.BANK_ACCOUNTS_NOT_CONFIGURED]: 409,
|
|
27
30
|
};
|
|
28
31
|
/** Status HTTP de los codes del feed genérico: 400 request inválido · 404 no existe · 502 falló la fuente. */
|
|
29
32
|
exports.RECONCILIATION_FEED_ERROR_HTTP_STATUS = {
|
|
@@ -4,5 +4,13 @@ export declare const RECONCILIATION_PERIOD_KEY_PATTERN: RegExp;
|
|
|
4
4
|
export declare const RECONCILIATION_MONTH_PATTERN: RegExp;
|
|
5
5
|
/** Largo mínimo de una nota de investigación. */
|
|
6
6
|
export declare const RECONCILIATION_MIN_NOTE_LENGTH = 10;
|
|
7
|
+
/** Banco o cuenta del EdC: forman la ruta `EDO_CTA/{bank}/{account}/` del bucket. */
|
|
8
|
+
export declare const RECONCILIATION_BANK_PATH_SEGMENT_PATTERN: RegExp;
|
|
9
|
+
/** Largo máximo de un banco o una cuenta del EdC. */
|
|
10
|
+
export declare const RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH = 128;
|
|
11
|
+
/** Cuentas de banco por definición. */
|
|
12
|
+
export declare const RECONCILIATION_MAX_BANK_ACCOUNTS = 10;
|
|
13
|
+
/** Días hábiles máximos de espera del EdC. */
|
|
14
|
+
export declare const RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
|
|
7
15
|
/** Registros por página de un feed de dueño. */
|
|
8
16
|
export declare const RECONCILIATION_FEED_PAGE_SIZE = 500;
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RECONCILIATION_FEED_PAGE_SIZE = exports.RECONCILIATION_MIN_NOTE_LENGTH = exports.RECONCILIATION_MONTH_PATTERN = exports.RECONCILIATION_PERIOD_KEY_PATTERN = void 0;
|
|
3
|
+
exports.RECONCILIATION_FEED_PAGE_SIZE = exports.RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = exports.RECONCILIATION_MAX_BANK_ACCOUNTS = exports.RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH = exports.RECONCILIATION_BANK_PATH_SEGMENT_PATTERN = exports.RECONCILIATION_MIN_NOTE_LENGTH = exports.RECONCILIATION_MONTH_PATTERN = exports.RECONCILIATION_PERIOD_KEY_PATTERN = void 0;
|
|
4
4
|
/** Periodo de una corrida: día `YYYY-MM-DD`, semana ISO `YYYY-Www` o mes `YYYY-MM`. */
|
|
5
5
|
exports.RECONCILIATION_PERIOD_KEY_PATTERN = /^\d{4}-((0[1-9]|1[0-2])(-(0[1-9]|[12]\d|3[01]))?|W(0[1-9]|[1-4]\d|5[0-3]))$/;
|
|
6
6
|
/** Mes `YYYY-MM`. */
|
|
7
7
|
exports.RECONCILIATION_MONTH_PATTERN = /^\d{4}-(0[1-9]|1[0-2])$/;
|
|
8
8
|
/** Largo mínimo de una nota de investigación. */
|
|
9
9
|
exports.RECONCILIATION_MIN_NOTE_LENGTH = 10;
|
|
10
|
+
/** Banco o cuenta del EdC: forman la ruta `EDO_CTA/{bank}/{account}/` del bucket. */
|
|
11
|
+
exports.RECONCILIATION_BANK_PATH_SEGMENT_PATTERN = /^[A-Za-z0-9_-]+$/;
|
|
12
|
+
/** Largo máximo de un banco o una cuenta del EdC. */
|
|
13
|
+
exports.RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH = 128;
|
|
14
|
+
/** Cuentas de banco por definición. */
|
|
15
|
+
exports.RECONCILIATION_MAX_BANK_ACCOUNTS = 10;
|
|
16
|
+
/** Días hábiles máximos de espera del EdC. */
|
|
17
|
+
exports.RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
|
|
10
18
|
/** Registros por página de un feed de dueño. */
|
|
11
19
|
exports.RECONCILIATION_FEED_PAGE_SIZE = 500;
|
|
@@ -12,6 +12,11 @@ export interface ReconciliationDefinitionSource {
|
|
|
12
12
|
concept: ReconciliationFeedConceptEnum;
|
|
13
13
|
partName?: string;
|
|
14
14
|
}
|
|
15
|
+
/** Cuenta de FSA cuyo EdC lee una definición BANK_STATEMENT. */
|
|
16
|
+
export interface ReconciliationDefinitionBankAccountView {
|
|
17
|
+
bank: string;
|
|
18
|
+
account: string;
|
|
19
|
+
}
|
|
15
20
|
export interface ReconciliationDefinition {
|
|
16
21
|
tenantId: string;
|
|
17
22
|
definitionId: string;
|
|
@@ -34,6 +39,10 @@ export interface ReconciliationDefinition {
|
|
|
34
39
|
sandboxRetailerIds: string[];
|
|
35
40
|
sandboxDirectoryIds: string[];
|
|
36
41
|
activeFrom?: string;
|
|
42
|
+
/** Ajustes del EdC; solo en las definiciones BANK_STATEMENT. */
|
|
43
|
+
bankAccounts?: ReconciliationDefinitionBankAccountView[];
|
|
44
|
+
statementGraceBusinessDays?: number;
|
|
45
|
+
fillPayeeConfirmationOnCredit?: boolean;
|
|
37
46
|
version: number;
|
|
38
47
|
createdAt: string;
|
|
39
48
|
createdBy: string;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { ReconciliationDefinitionStatusEnum } from '../../enums/ReconciliationDefinitionStatusEnum';
|
|
2
2
|
import { ReconciliationResolutionTypeEnum } from '../../enums/ReconciliationResolutionTypeEnum';
|
|
3
|
+
/** Cuenta de FSA cuyo EdC lee una definición BANK_STATEMENT. */
|
|
4
|
+
export declare class ReconciliationDefinitionBankAccount {
|
|
5
|
+
bank: string;
|
|
6
|
+
account: string;
|
|
7
|
+
}
|
|
3
8
|
/** Body de publicConfigureReconciliationDefinition. */
|
|
4
9
|
export declare class ConfigureReconciliationDefinitionRequest {
|
|
5
10
|
status: ReconciliationDefinitionStatusEnum;
|
|
@@ -9,6 +14,10 @@ export declare class ConfigureReconciliationDefinitionRequest {
|
|
|
9
14
|
sandboxRetailerIds?: string[];
|
|
10
15
|
sandboxDirectoryIds?: string[];
|
|
11
16
|
activeFrom?: string;
|
|
17
|
+
/** Reemplaza la lista completa de cuentas del EdC. */
|
|
18
|
+
bankAccounts?: ReconciliationDefinitionBankAccount[];
|
|
19
|
+
statementGraceBusinessDays?: number;
|
|
20
|
+
fillPayeeConfirmationOnCredit?: boolean;
|
|
12
21
|
}
|
|
13
22
|
/** Body de publicRunReconciliation: responde 202 con `runId` y corre asíncrono. */
|
|
14
23
|
export declare class RunReconciliationRequest {
|
|
@@ -9,12 +9,31 @@ 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.AddReconciliationItemNoteRequest = exports.ReactivateReconciliationItemRequest = exports.ResolveReconciliationItemRequest = exports.RunReconciliationRequest = exports.ConfigureReconciliationDefinitionRequest = void 0;
|
|
12
|
+
exports.AddReconciliationItemNoteRequest = exports.ReactivateReconciliationItemRequest = exports.ResolveReconciliationItemRequest = exports.RunReconciliationRequest = exports.ConfigureReconciliationDefinitionRequest = exports.ReconciliationDefinitionBankAccount = void 0;
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
+
const reconciliationValidation_1 = require("../../constants/reconciliationValidation");
|
|
15
16
|
const ReconciliationDefinitionStatusEnum_1 = require("../../enums/ReconciliationDefinitionStatusEnum");
|
|
16
17
|
const ReconciliationResolutionTypeEnum_1 = require("../../enums/ReconciliationResolutionTypeEnum");
|
|
17
18
|
const reconciliationRequestDecorators_1 = require("./reconciliationRequestDecorators");
|
|
19
|
+
/** Cuenta de FSA cuyo EdC lee una definición BANK_STATEMENT. */
|
|
20
|
+
class ReconciliationDefinitionBankAccount {
|
|
21
|
+
}
|
|
22
|
+
exports.ReconciliationDefinitionBankAccount = ReconciliationDefinitionBankAccount;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
(0, class_validator_1.IsString)(),
|
|
26
|
+
(0, class_validator_1.MaxLength)(reconciliationValidation_1.RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH),
|
|
27
|
+
(0, class_validator_1.Matches)(reconciliationValidation_1.RECONCILIATION_BANK_PATH_SEGMENT_PATTERN),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], ReconciliationDefinitionBankAccount.prototype, "bank", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_transformer_1.Expose)(),
|
|
32
|
+
(0, class_validator_1.IsString)(),
|
|
33
|
+
(0, class_validator_1.MaxLength)(reconciliationValidation_1.RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH),
|
|
34
|
+
(0, class_validator_1.Matches)(reconciliationValidation_1.RECONCILIATION_BANK_PATH_SEGMENT_PATTERN),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ReconciliationDefinitionBankAccount.prototype, "account", void 0);
|
|
18
37
|
/** Body de publicConfigureReconciliationDefinition. */
|
|
19
38
|
class ConfigureReconciliationDefinitionRequest {
|
|
20
39
|
}
|
|
@@ -62,6 +81,29 @@ __decorate([
|
|
|
62
81
|
(0, class_validator_1.IsISO8601)(),
|
|
63
82
|
__metadata("design:type", String)
|
|
64
83
|
], ConfigureReconciliationDefinitionRequest.prototype, "activeFrom", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, class_transformer_1.Expose)(),
|
|
86
|
+
(0, class_validator_1.IsOptional)(),
|
|
87
|
+
(0, class_validator_1.IsArray)(),
|
|
88
|
+
(0, class_validator_1.ArrayMaxSize)(reconciliationValidation_1.RECONCILIATION_MAX_BANK_ACCOUNTS),
|
|
89
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
90
|
+
(0, class_transformer_1.Type)(() => ReconciliationDefinitionBankAccount),
|
|
91
|
+
__metadata("design:type", Array)
|
|
92
|
+
], ConfigureReconciliationDefinitionRequest.prototype, "bankAccounts", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, class_transformer_1.Expose)(),
|
|
95
|
+
(0, class_validator_1.IsOptional)(),
|
|
96
|
+
(0, class_validator_1.IsInt)(),
|
|
97
|
+
(0, class_validator_1.Min)(0),
|
|
98
|
+
(0, class_validator_1.Max)(reconciliationValidation_1.RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS),
|
|
99
|
+
__metadata("design:type", Number)
|
|
100
|
+
], ConfigureReconciliationDefinitionRequest.prototype, "statementGraceBusinessDays", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
(0, class_transformer_1.Expose)(),
|
|
103
|
+
(0, class_validator_1.IsOptional)(),
|
|
104
|
+
(0, class_validator_1.IsBoolean)(),
|
|
105
|
+
__metadata("design:type", Boolean)
|
|
106
|
+
], ConfigureReconciliationDefinitionRequest.prototype, "fillPayeeConfirmationOnCredit", void 0);
|
|
65
107
|
/** Body de publicRunReconciliation: responde 202 con `runId` y corre asíncrono. */
|
|
66
108
|
class RunReconciliationRequest {
|
|
67
109
|
}
|
|
@@ -4,6 +4,7 @@ import { ReconciliationExportFormatEnum } from '../../enums/ReconciliationExport
|
|
|
4
4
|
import { ReconciliationFeedConceptEnum } from '../../enums/ReconciliationFeedConceptEnum';
|
|
5
5
|
import { ReconciliationItemStateEnum } from '../../enums/ReconciliationItemStateEnum';
|
|
6
6
|
import { ReconciliationLayerEnum } from '../../enums/ReconciliationLayerEnum';
|
|
7
|
+
import { ReconciliationResolutionStatusEnum } from '../../enums/ReconciliationResolutionStatusEnum';
|
|
7
8
|
import { ReconciliationRuleTypeEnum } from '../../enums/ReconciliationRuleTypeEnum';
|
|
8
9
|
import { ReconciliationRunStatusEnum } from '../../enums/ReconciliationRunStatusEnum';
|
|
9
10
|
/** Query de publicListReconciliationDefinitions. */
|
|
@@ -49,6 +50,7 @@ export declare class ListReconciliationItemsQuery {
|
|
|
49
50
|
concept?: ReconciliationFeedConceptEnum;
|
|
50
51
|
counterpartyId?: string;
|
|
51
52
|
format?: ReconciliationExportFormatEnum;
|
|
53
|
+
resolutionStatus?: ReconciliationResolutionStatusEnum;
|
|
52
54
|
limit?: number;
|
|
53
55
|
nextToken?: string;
|
|
54
56
|
}
|
|
@@ -19,6 +19,7 @@ const ReconciliationExportFormatEnum_1 = require("../../enums/ReconciliationExpo
|
|
|
19
19
|
const ReconciliationFeedConceptEnum_1 = require("../../enums/ReconciliationFeedConceptEnum");
|
|
20
20
|
const ReconciliationItemStateEnum_1 = require("../../enums/ReconciliationItemStateEnum");
|
|
21
21
|
const ReconciliationLayerEnum_1 = require("../../enums/ReconciliationLayerEnum");
|
|
22
|
+
const ReconciliationResolutionStatusEnum_1 = require("../../enums/ReconciliationResolutionStatusEnum");
|
|
22
23
|
const ReconciliationRuleTypeEnum_1 = require("../../enums/ReconciliationRuleTypeEnum");
|
|
23
24
|
const ReconciliationRunStatusEnum_1 = require("../../enums/ReconciliationRunStatusEnum");
|
|
24
25
|
const reconciliationRequestDecorators_1 = require("./reconciliationRequestDecorators");
|
|
@@ -182,6 +183,12 @@ __decorate([
|
|
|
182
183
|
(0, class_validator_1.IsEnum)(ReconciliationExportFormatEnum_1.ReconciliationExportFormatEnum),
|
|
183
184
|
__metadata("design:type", String)
|
|
184
185
|
], ListReconciliationItemsQuery.prototype, "format", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
(0, class_transformer_1.Expose)(),
|
|
188
|
+
(0, class_validator_1.IsOptional)(),
|
|
189
|
+
(0, class_validator_1.IsEnum)(ReconciliationResolutionStatusEnum_1.ReconciliationResolutionStatusEnum),
|
|
190
|
+
__metadata("design:type", String)
|
|
191
|
+
], ListReconciliationItemsQuery.prototype, "resolutionStatus", void 0);
|
|
185
192
|
__decorate([
|
|
186
193
|
(0, reconciliationRequestDecorators_1.PageLimit)(),
|
|
187
194
|
__metadata("design:type", Number)
|
|
@@ -30,5 +30,11 @@ export declare enum ReconciliationErrorCodeEnum {
|
|
|
30
30
|
BANK_CALENDAR_UNAVAILABLE = "BANK_CALENDAR_UNAVAILABLE",
|
|
31
31
|
RUN_DISPATCH_FAILED = "RUN_DISPATCH_FAILED",
|
|
32
32
|
BANK_STATEMENT_UNAVAILABLE = "BANK_STATEMENT_UNAVAILABLE",
|
|
33
|
-
INVALID_SEED_TENANT = "INVALID_SEED_TENANT"
|
|
33
|
+
INVALID_SEED_TENANT = "INVALID_SEED_TENANT",
|
|
34
|
+
/** El ajuste quedó con resultado incierto y se revisa a mano. */
|
|
35
|
+
ADJUSTMENT_NEEDS_REVIEW = "ADJUSTMENT_NEEDS_REVIEW",
|
|
36
|
+
/** A la partida le falta la referencia que pide el ajuste. */
|
|
37
|
+
ADJUSTMENT_REFERENCE_MISSING = "ADJUSTMENT_REFERENCE_MISSING",
|
|
38
|
+
/** La definición de banco no tiene cuentas configuradas. */
|
|
39
|
+
BANK_ACCOUNTS_NOT_CONFIGURED = "BANK_ACCOUNTS_NOT_CONFIGURED"
|
|
34
40
|
}
|
|
@@ -35,4 +35,10 @@ var ReconciliationErrorCodeEnum;
|
|
|
35
35
|
ReconciliationErrorCodeEnum["RUN_DISPATCH_FAILED"] = "RUN_DISPATCH_FAILED";
|
|
36
36
|
ReconciliationErrorCodeEnum["BANK_STATEMENT_UNAVAILABLE"] = "BANK_STATEMENT_UNAVAILABLE";
|
|
37
37
|
ReconciliationErrorCodeEnum["INVALID_SEED_TENANT"] = "INVALID_SEED_TENANT";
|
|
38
|
+
/** El ajuste quedó con resultado incierto y se revisa a mano. */
|
|
39
|
+
ReconciliationErrorCodeEnum["ADJUSTMENT_NEEDS_REVIEW"] = "ADJUSTMENT_NEEDS_REVIEW";
|
|
40
|
+
/** A la partida le falta la referencia que pide el ajuste. */
|
|
41
|
+
ReconciliationErrorCodeEnum["ADJUSTMENT_REFERENCE_MISSING"] = "ADJUSTMENT_REFERENCE_MISSING";
|
|
42
|
+
/** La definición de banco no tiene cuentas configuradas. */
|
|
43
|
+
ReconciliationErrorCodeEnum["BANK_ACCOUNTS_NOT_CONFIGURED"] = "BANK_ACCOUNTS_NOT_CONFIGURED";
|
|
38
44
|
})(ReconciliationErrorCodeEnum || (exports.ReconciliationErrorCodeEnum = ReconciliationErrorCodeEnum = {}));
|
|
@@ -2,5 +2,9 @@
|
|
|
2
2
|
export declare enum ReconciliationResolutionArchiveReasonEnum {
|
|
3
3
|
REACTIVATED = "REACTIVATED",
|
|
4
4
|
/** La corrida encontró que ambos lados ya cuadran. */
|
|
5
|
-
MATCHED_ON_RECALCULATION = "MATCHED_ON_RECALCULATION"
|
|
5
|
+
MATCHED_ON_RECALCULATION = "MATCHED_ON_RECALCULATION",
|
|
6
|
+
/** Otra resolución la reemplazó. */
|
|
7
|
+
SUPERSEDED = "SUPERSEDED",
|
|
8
|
+
/** El dueño del dinero rechazó el ajuste. */
|
|
9
|
+
ADJUSTMENT_REJECTED = "ADJUSTMENT_REJECTED"
|
|
6
10
|
}
|
|
@@ -7,4 +7,8 @@ var ReconciliationResolutionArchiveReasonEnum;
|
|
|
7
7
|
ReconciliationResolutionArchiveReasonEnum["REACTIVATED"] = "REACTIVATED";
|
|
8
8
|
/** La corrida encontró que ambos lados ya cuadran. */
|
|
9
9
|
ReconciliationResolutionArchiveReasonEnum["MATCHED_ON_RECALCULATION"] = "MATCHED_ON_RECALCULATION";
|
|
10
|
+
/** Otra resolución la reemplazó. */
|
|
11
|
+
ReconciliationResolutionArchiveReasonEnum["SUPERSEDED"] = "SUPERSEDED";
|
|
12
|
+
/** El dueño del dinero rechazó el ajuste. */
|
|
13
|
+
ReconciliationResolutionArchiveReasonEnum["ADJUSTMENT_REJECTED"] = "ADJUSTMENT_REJECTED";
|
|
10
14
|
})(ReconciliationResolutionArchiveReasonEnum || (exports.ReconciliationResolutionArchiveReasonEnum = ReconciliationResolutionArchiveReasonEnum = {}));
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Type } from 'class-transformer';
|
|
2
|
-
import { ArrayNotEmpty, IsArray, IsDefined, IsEnum, IsNotEmpty, IsString, ValidateIf, ValidateNested } from 'class-validator';
|
|
2
|
+
import { ArrayNotEmpty, IsArray, IsDefined, IsEnum, IsNotEmpty, IsOptional, IsString, ValidateIf, ValidateNested } from 'class-validator';
|
|
3
3
|
import { WalletProvider } from '../enums/WalletProvider';
|
|
4
4
|
|
|
5
5
|
// Datos que entrega Apple (PKAddPaymentPassViewController) a la app. Se reenvían tal cual a Pomelo.
|
|
@@ -18,11 +18,23 @@ export class AppleWalletProvisioningData {
|
|
|
18
18
|
nonceSignature: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// Datos que entrega el SDK TapAndPay de Google a la app (PaymentCredentialsGenerator.generate).
|
|
22
22
|
export class GoogleWalletProvisioningData {
|
|
23
23
|
@IsString()
|
|
24
24
|
@IsNotEmpty()
|
|
25
25
|
serverSessionId: string;
|
|
26
|
+
|
|
27
|
+
// stableHardwareId de Google. Pomelo lo exige solo para Visa; la marca se valida en pomelo-v2.
|
|
28
|
+
@IsOptional()
|
|
29
|
+
@IsString()
|
|
30
|
+
@IsNotEmpty()
|
|
31
|
+
deviceId?: string;
|
|
32
|
+
|
|
33
|
+
// walletId de Google. Pomelo lo exige solo para Visa.
|
|
34
|
+
@IsOptional()
|
|
35
|
+
@IsString()
|
|
36
|
+
@IsNotEmpty()
|
|
37
|
+
walletAccountId?: string;
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
export class WalletProvisioningRequest {
|
|
@@ -22,6 +22,9 @@ export const RECONCILIATION_ERROR_HTTP_STATUS: Readonly<Record<C, 400 | 404 | 40
|
|
|
22
22
|
[C.RUN_DISPATCH_FAILED]: 502,
|
|
23
23
|
[C.BANK_STATEMENT_UNAVAILABLE]: 502,
|
|
24
24
|
[C.INVALID_SEED_TENANT]: 400,
|
|
25
|
+
[C.ADJUSTMENT_NEEDS_REVIEW]: 409,
|
|
26
|
+
[C.ADJUSTMENT_REFERENCE_MISSING]: 422,
|
|
27
|
+
[C.BANK_ACCOUNTS_NOT_CONFIGURED]: 409,
|
|
25
28
|
};
|
|
26
29
|
|
|
27
30
|
/** Status HTTP de los codes del feed genérico: 400 request inválido · 404 no existe · 502 falló la fuente. */
|
|
@@ -7,5 +7,17 @@ export const RECONCILIATION_MONTH_PATTERN = /^\d{4}-(0[1-9]|1[0-2])$/;
|
|
|
7
7
|
/** Largo mínimo de una nota de investigación. */
|
|
8
8
|
export const RECONCILIATION_MIN_NOTE_LENGTH = 10;
|
|
9
9
|
|
|
10
|
+
/** Banco o cuenta del EdC: forman la ruta `EDO_CTA/{bank}/{account}/` del bucket. */
|
|
11
|
+
export const RECONCILIATION_BANK_PATH_SEGMENT_PATTERN = /^[A-Za-z0-9_-]+$/;
|
|
12
|
+
|
|
13
|
+
/** Largo máximo de un banco o una cuenta del EdC. */
|
|
14
|
+
export const RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH = 128;
|
|
15
|
+
|
|
16
|
+
/** Cuentas de banco por definición. */
|
|
17
|
+
export const RECONCILIATION_MAX_BANK_ACCOUNTS = 10;
|
|
18
|
+
|
|
19
|
+
/** Días hábiles máximos de espera del EdC. */
|
|
20
|
+
export const RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
|
|
21
|
+
|
|
10
22
|
/** Registros por página de un feed de dueño. */
|
|
11
23
|
export const RECONCILIATION_FEED_PAGE_SIZE = 500;
|
|
@@ -14,6 +14,12 @@ export interface ReconciliationDefinitionSource {
|
|
|
14
14
|
partName?: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/** Cuenta de FSA cuyo EdC lee una definición BANK_STATEMENT. */
|
|
18
|
+
export interface ReconciliationDefinitionBankAccountView {
|
|
19
|
+
bank: string;
|
|
20
|
+
account: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
export interface ReconciliationDefinition {
|
|
18
24
|
tenantId: string;
|
|
19
25
|
definitionId: string;
|
|
@@ -36,6 +42,10 @@ export interface ReconciliationDefinition {
|
|
|
36
42
|
sandboxRetailerIds: string[];
|
|
37
43
|
sandboxDirectoryIds: string[];
|
|
38
44
|
activeFrom?: string;
|
|
45
|
+
/** Ajustes del EdC; solo en las definiciones BANK_STATEMENT. */
|
|
46
|
+
bankAccounts?: ReconciliationDefinitionBankAccountView[];
|
|
47
|
+
statementGraceBusinessDays?: number;
|
|
48
|
+
fillPayeeConfirmationOnCredit?: boolean;
|
|
39
49
|
version: number;
|
|
40
50
|
createdAt: string;
|
|
41
51
|
createdBy: string;
|
|
@@ -1,9 +1,46 @@
|
|
|
1
|
-
import { Expose } from 'class-transformer';
|
|
2
|
-
import {
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import {
|
|
3
|
+
ArrayMaxSize,
|
|
4
|
+
ArrayUnique,
|
|
5
|
+
IsArray,
|
|
6
|
+
IsBoolean,
|
|
7
|
+
IsEnum,
|
|
8
|
+
IsInt,
|
|
9
|
+
IsISO8601,
|
|
10
|
+
IsNotEmpty,
|
|
11
|
+
IsOptional,
|
|
12
|
+
IsString,
|
|
13
|
+
Matches,
|
|
14
|
+
Max,
|
|
15
|
+
MaxLength,
|
|
16
|
+
Min,
|
|
17
|
+
ValidateNested,
|
|
18
|
+
} from 'class-validator';
|
|
19
|
+
import {
|
|
20
|
+
RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH,
|
|
21
|
+
RECONCILIATION_BANK_PATH_SEGMENT_PATTERN,
|
|
22
|
+
RECONCILIATION_MAX_BANK_ACCOUNTS,
|
|
23
|
+
RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS,
|
|
24
|
+
} from '../../constants/reconciliationValidation';
|
|
3
25
|
import { ReconciliationDefinitionStatusEnum } from '../../enums/ReconciliationDefinitionStatusEnum';
|
|
4
26
|
import { ReconciliationResolutionTypeEnum } from '../../enums/ReconciliationResolutionTypeEnum';
|
|
5
27
|
import { NoteText, PeriodKey, RequiredId, RequiredReason } from './reconciliationRequestDecorators';
|
|
6
28
|
|
|
29
|
+
/** Cuenta de FSA cuyo EdC lee una definición BANK_STATEMENT. */
|
|
30
|
+
export class ReconciliationDefinitionBankAccount {
|
|
31
|
+
@Expose()
|
|
32
|
+
@IsString()
|
|
33
|
+
@MaxLength(RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH)
|
|
34
|
+
@Matches(RECONCILIATION_BANK_PATH_SEGMENT_PATTERN)
|
|
35
|
+
bank!: string;
|
|
36
|
+
|
|
37
|
+
@Expose()
|
|
38
|
+
@IsString()
|
|
39
|
+
@MaxLength(RECONCILIATION_BANK_PATH_SEGMENT_MAX_LENGTH)
|
|
40
|
+
@Matches(RECONCILIATION_BANK_PATH_SEGMENT_PATTERN)
|
|
41
|
+
account!: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
7
44
|
/** Body de publicConfigureReconciliationDefinition. */
|
|
8
45
|
export class ConfigureReconciliationDefinitionRequest {
|
|
9
46
|
@Expose()
|
|
@@ -43,6 +80,27 @@ export class ConfigureReconciliationDefinitionRequest {
|
|
|
43
80
|
@IsOptional()
|
|
44
81
|
@IsISO8601()
|
|
45
82
|
activeFrom?: string;
|
|
83
|
+
|
|
84
|
+
/** Reemplaza la lista completa de cuentas del EdC. */
|
|
85
|
+
@Expose()
|
|
86
|
+
@IsOptional()
|
|
87
|
+
@IsArray()
|
|
88
|
+
@ArrayMaxSize(RECONCILIATION_MAX_BANK_ACCOUNTS)
|
|
89
|
+
@ValidateNested({ each: true })
|
|
90
|
+
@Type(() => ReconciliationDefinitionBankAccount)
|
|
91
|
+
bankAccounts?: ReconciliationDefinitionBankAccount[];
|
|
92
|
+
|
|
93
|
+
@Expose()
|
|
94
|
+
@IsOptional()
|
|
95
|
+
@IsInt()
|
|
96
|
+
@Min(0)
|
|
97
|
+
@Max(RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS)
|
|
98
|
+
statementGraceBusinessDays?: number;
|
|
99
|
+
|
|
100
|
+
@Expose()
|
|
101
|
+
@IsOptional()
|
|
102
|
+
@IsBoolean()
|
|
103
|
+
fillPayeeConfirmationOnCredit?: boolean;
|
|
46
104
|
}
|
|
47
105
|
|
|
48
106
|
/** Body de publicRunReconciliation: responde 202 con `runId` y corre asíncrono. */
|
|
@@ -7,6 +7,7 @@ import { ReconciliationExportFormatEnum } from '../../enums/ReconciliationExport
|
|
|
7
7
|
import { ReconciliationFeedConceptEnum } from '../../enums/ReconciliationFeedConceptEnum';
|
|
8
8
|
import { ReconciliationItemStateEnum } from '../../enums/ReconciliationItemStateEnum';
|
|
9
9
|
import { ReconciliationLayerEnum } from '../../enums/ReconciliationLayerEnum';
|
|
10
|
+
import { ReconciliationResolutionStatusEnum } from '../../enums/ReconciliationResolutionStatusEnum';
|
|
10
11
|
import { ReconciliationRuleTypeEnum } from '../../enums/ReconciliationRuleTypeEnum';
|
|
11
12
|
import { ReconciliationRunStatusEnum } from '../../enums/ReconciliationRunStatusEnum';
|
|
12
13
|
import { PageLimit, PageToken, PeriodKey, RequiredId } from './reconciliationRequestDecorators';
|
|
@@ -140,6 +141,11 @@ export class ListReconciliationItemsQuery {
|
|
|
140
141
|
@IsEnum(ReconciliationExportFormatEnum)
|
|
141
142
|
format?: ReconciliationExportFormatEnum;
|
|
142
143
|
|
|
144
|
+
@Expose()
|
|
145
|
+
@IsOptional()
|
|
146
|
+
@IsEnum(ReconciliationResolutionStatusEnum)
|
|
147
|
+
resolutionStatus?: ReconciliationResolutionStatusEnum;
|
|
148
|
+
|
|
143
149
|
@PageLimit()
|
|
144
150
|
limit?: number;
|
|
145
151
|
|
|
@@ -31,4 +31,10 @@ export enum ReconciliationErrorCodeEnum {
|
|
|
31
31
|
RUN_DISPATCH_FAILED = 'RUN_DISPATCH_FAILED',
|
|
32
32
|
BANK_STATEMENT_UNAVAILABLE = 'BANK_STATEMENT_UNAVAILABLE',
|
|
33
33
|
INVALID_SEED_TENANT = 'INVALID_SEED_TENANT',
|
|
34
|
+
/** El ajuste quedó con resultado incierto y se revisa a mano. */
|
|
35
|
+
ADJUSTMENT_NEEDS_REVIEW = 'ADJUSTMENT_NEEDS_REVIEW',
|
|
36
|
+
/** A la partida le falta la referencia que pide el ajuste. */
|
|
37
|
+
ADJUSTMENT_REFERENCE_MISSING = 'ADJUSTMENT_REFERENCE_MISSING',
|
|
38
|
+
/** La definición de banco no tiene cuentas configuradas. */
|
|
39
|
+
BANK_ACCOUNTS_NOT_CONFIGURED = 'BANK_ACCOUNTS_NOT_CONFIGURED',
|
|
34
40
|
}
|
|
@@ -3,4 +3,8 @@ export enum ReconciliationResolutionArchiveReasonEnum {
|
|
|
3
3
|
REACTIVATED = 'REACTIVATED',
|
|
4
4
|
/** La corrida encontró que ambos lados ya cuadran. */
|
|
5
5
|
MATCHED_ON_RECALCULATION = 'MATCHED_ON_RECALCULATION',
|
|
6
|
+
/** Otra resolución la reemplazó. */
|
|
7
|
+
SUPERSEDED = 'SUPERSEDED',
|
|
8
|
+
/** El dueño del dinero rechazó el ajuste. */
|
|
9
|
+
ADJUSTMENT_REJECTED = 'ADJUSTMENT_REJECTED',
|
|
6
10
|
}
|