@fiado/type-kit 3.624.0 → 3.626.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.
@@ -0,0 +1,39 @@
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
+ ListReconciliationItemsQuery,
8
+ PrivateListReconciliationItemsQuery,
9
+ ReconciliationItemStateEnum: S,
10
+ RECONCILIATION_SCREEN_ITEM_STATES,
11
+ } = Reconciliation;
12
+
13
+ function errorsOf<T extends object>(cls: new () => T, payload: Record<string, unknown>): string[] {
14
+ const dto = plainToInstance(cls, payload, { excludeExtraneousValues: true });
15
+ return validateSync(dto).map((e) => e.property);
16
+ }
17
+
18
+ const operator = { tenantId: 'surekeep', author: 'conciliacion-dashboard', actorId: 'aZ3x9Qk-azure-ad-sub_01' };
19
+
20
+ describe('RECONCILIATION_SCREEN_ITEM_STATES', () => {
21
+ it('trae todos los estados menos TEST', () => {
22
+ expect(RECONCILIATION_SCREEN_ITEM_STATES).not.toContain(S.TEST);
23
+ expect([...RECONCILIATION_SCREEN_ITEM_STATES, S.TEST].sort()).toEqual(Object.values(S).sort());
24
+ });
25
+ });
26
+
27
+ describe('screenState en la lista de partidas', () => {
28
+ it.each([
29
+ [ListReconciliationItemsQuery, { definitionId: 'd1' }],
30
+ [PrivateListReconciliationItemsQuery, { definitionId: 'd1', ...operator }],
31
+ ])('%p acepta un estado de la matriz, rechaza TEST y es opcional', (cls, base) => {
32
+ const ok = plainToInstance(cls as never, { ...base, screenState: 'AMOUNT_MISMATCH' }, { excludeExtraneousValues: true }) as { screenState?: string };
33
+ expect(ok.screenState).toBe(S.AMOUNT_MISMATCH);
34
+ expect(errorsOf(cls as never, { ...base, screenState: 'AMOUNT_MISMATCH' })).toEqual([]);
35
+ expect(errorsOf(cls as never, base)).toEqual([]);
36
+ expect(errorsOf(cls as never, { ...base, screenState: 'TEST' })).toEqual(['screenState']);
37
+ expect(errorsOf(cls as never, { ...base, screenState: 'NOPE' })).toEqual(['screenState']);
38
+ });
39
+ });
@@ -56,6 +56,12 @@ export declare class MeetingResponse {
56
56
  registeredCount?: number;
57
57
  /** Cuántos de esos PARTICIPANT quedaron ATTENDED. Mismo mantenimiento que registeredCount. */
58
58
  attendedCount?: number;
59
+ /**
60
+ * Epoch ms de la última vez que se pidió iniciarla desde el back office («Iniciar»). Una reunión de la
61
+ * plataforma puede tener varias filas (una por fecha en que se dio); con esto el back office sabe desde
62
+ * cuál se inició la sesión que está corriendo y marca ésa como «En curso».
63
+ */
64
+ startRequestedAt?: number;
59
65
  tenantId?: string;
60
66
  /** Epoch ms, como el resto de la flota. */
61
67
  createdAt?: number;
@@ -1,3 +1,4 @@
1
+ import { ReconciliationItemStateEnum } from '../enums/ReconciliationItemStateEnum';
1
2
  /** Periodo de una corrida: día `YYYY-MM-DD`, semana ISO `YYYY-Www` o mes `YYYY-MM`. */
2
3
  export declare const RECONCILIATION_PERIOD_KEY_PATTERN: RegExp;
3
4
  /** Mes `YYYY-MM`. */
@@ -14,3 +15,5 @@ export declare const RECONCILIATION_MAX_BANK_ACCOUNTS = 10;
14
15
  export declare const RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
15
16
  /** Registros por página de un feed de dueño. */
16
17
  export declare const RECONCILIATION_FEED_PAGE_SIZE = 500;
18
+ /** Estados que muestra la matriz: todos menos `TEST`, que vive en su propia lista. */
19
+ export declare const RECONCILIATION_SCREEN_ITEM_STATES: readonly ReconciliationItemStateEnum[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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;
3
+ exports.RECONCILIATION_SCREEN_ITEM_STATES = 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
+ const ReconciliationItemStateEnum_1 = require("../enums/ReconciliationItemStateEnum");
4
5
  /** Periodo de una corrida: día `YYYY-MM-DD`, semana ISO `YYYY-Www` o mes `YYYY-MM`. */
5
6
  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
7
  /** Mes `YYYY-MM`. */
@@ -17,3 +18,5 @@ exports.RECONCILIATION_MAX_BANK_ACCOUNTS = 10;
17
18
  exports.RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
18
19
  /** Registros por página de un feed de dueño. */
19
20
  exports.RECONCILIATION_FEED_PAGE_SIZE = 500;
21
+ /** Estados que muestra la matriz: todos menos `TEST`, que vive en su propia lista. */
22
+ exports.RECONCILIATION_SCREEN_ITEM_STATES = Object.values(ReconciliationItemStateEnum_1.ReconciliationItemStateEnum).filter((state) => state !== ReconciliationItemStateEnum_1.ReconciliationItemStateEnum.TEST);
@@ -47,6 +47,8 @@ export declare class ListReconciliationItemsQuery {
47
47
  from?: string;
48
48
  to?: string;
49
49
  state?: ReconciliationItemStateEnum;
50
+ /** Estado de la matriz; no admite `TEST`. */
51
+ screenState?: ReconciliationItemStateEnum;
50
52
  concept?: ReconciliationFeedConceptEnum;
51
53
  counterpartyId?: string;
52
54
  format?: ReconciliationExportFormatEnum;
@@ -165,6 +165,12 @@ __decorate([
165
165
  (0, class_validator_1.IsEnum)(ReconciliationItemStateEnum_1.ReconciliationItemStateEnum),
166
166
  __metadata("design:type", String)
167
167
  ], ListReconciliationItemsQuery.prototype, "state", void 0);
168
+ __decorate([
169
+ (0, class_transformer_1.Expose)(),
170
+ (0, class_validator_1.IsOptional)(),
171
+ (0, class_validator_1.IsIn)(reconciliationValidation_1.RECONCILIATION_SCREEN_ITEM_STATES),
172
+ __metadata("design:type", String)
173
+ ], ListReconciliationItemsQuery.prototype, "screenState", void 0);
168
174
  __decorate([
169
175
  (0, class_transformer_1.Expose)(),
170
176
  (0, class_validator_1.IsOptional)(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.624.0",
3
+ "version": "3.626.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -57,6 +57,12 @@ export class MeetingResponse {
57
57
  registeredCount?: number;
58
58
  /** Cuántos de esos PARTICIPANT quedaron ATTENDED. Mismo mantenimiento que registeredCount. */
59
59
  attendedCount?: number;
60
+ /**
61
+ * Epoch ms de la última vez que se pidió iniciarla desde el back office («Iniciar»). Una reunión de la
62
+ * plataforma puede tener varias filas (una por fecha en que se dio); con esto el back office sabe desde
63
+ * cuál se inició la sesión que está corriendo y marca ésa como «En curso».
64
+ */
65
+ startRequestedAt?: number;
60
66
  tenantId?: string;
61
67
  /** Epoch ms, como el resto de la flota. */
62
68
  createdAt?: number;
@@ -1,3 +1,5 @@
1
+ import { ReconciliationItemStateEnum } from '../enums/ReconciliationItemStateEnum';
2
+
1
3
  /** Periodo de una corrida: día `YYYY-MM-DD`, semana ISO `YYYY-Www` o mes `YYYY-MM`. */
2
4
  export const 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]))$/;
3
5
 
@@ -21,3 +23,8 @@ export const RECONCILIATION_MAX_STATEMENT_GRACE_BUSINESS_DAYS = 30;
21
23
 
22
24
  /** Registros por página de un feed de dueño. */
23
25
  export const RECONCILIATION_FEED_PAGE_SIZE = 500;
26
+
27
+ /** Estados que muestra la matriz: todos menos `TEST`, que vive en su propia lista. */
28
+ export const RECONCILIATION_SCREEN_ITEM_STATES: readonly ReconciliationItemStateEnum[] = Object.values(ReconciliationItemStateEnum).filter(
29
+ (state) => state !== ReconciliationItemStateEnum.TEST,
30
+ );
@@ -1,7 +1,7 @@
1
1
  import { Expose, Type } from 'class-transformer';
2
- import { IsEnum, IsInt, IsISO8601, IsOptional, IsString, Matches, Max, Min } from 'class-validator';
2
+ import { IsEnum, IsIn, IsInt, IsISO8601, IsOptional, IsString, Matches, Max, Min } from 'class-validator';
3
3
  import { TransferNotePartyTypeEnum } from '../../../transferNote/enums/TransferNotePartyTypeEnum';
4
- import { RECONCILIATION_MONTH_PATTERN } from '../../constants/reconciliationValidation';
4
+ import { RECONCILIATION_MONTH_PATTERN, RECONCILIATION_SCREEN_ITEM_STATES } from '../../constants/reconciliationValidation';
5
5
  import { ReconciliationDefinitionStatusEnum } from '../../enums/ReconciliationDefinitionStatusEnum';
6
6
  import { ReconciliationExportFormatEnum } from '../../enums/ReconciliationExportFormatEnum';
7
7
  import { ReconciliationFeedConceptEnum } from '../../enums/ReconciliationFeedConceptEnum';
@@ -126,6 +126,12 @@ export class ListReconciliationItemsQuery {
126
126
  @IsEnum(ReconciliationItemStateEnum)
127
127
  state?: ReconciliationItemStateEnum;
128
128
 
129
+ /** Estado de la matriz; no admite `TEST`. */
130
+ @Expose()
131
+ @IsOptional()
132
+ @IsIn(RECONCILIATION_SCREEN_ITEM_STATES)
133
+ screenState?: ReconciliationItemStateEnum;
134
+
129
135
  @Expose()
130
136
  @IsOptional()
131
137
  @IsEnum(ReconciliationFeedConceptEnum)