@fiado/type-kit 3.310.0 → 3.311.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/retailCards/cardStockRequests.test.ts +148 -0
- package/bin/remittance/dtos/RemittanceFavoriteItem.d.ts +44 -0
- package/bin/remittance/dtos/RemittanceFavoriteItem.js +14 -0
- package/bin/remittance/dtos/RemittanceFavoriteListResponse.d.ts +14 -0
- package/bin/remittance/dtos/RemittanceFavoriteListResponse.js +14 -0
- package/bin/remittance/dtos/index.d.ts +2 -0
- package/bin/remittance/dtos/index.js +2 -0
- package/bin/remittance/enums/RemittanceCountryISO.d.ts +1 -0
- package/bin/remittance/enums/RemittanceCountryISO.js +1 -0
- package/bin/retailCards/dtos/requests/RegisterCardBatchRequest.d.ts +7 -3
- package/bin/retailCards/dtos/requests/RegisterCardBatchRequest.js +8 -7
- package/bin/retailCards/dtos/requests/RegisterCardDeliveryRequest.d.ts +11 -0
- package/bin/{retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.js → retailCards/dtos/requests/RegisterCardDeliveryRequest.js} +21 -7
- package/bin/retailCards/dtos/requests/ReverseCardMovementRequest.d.ts +9 -0
- package/bin/retailCards/dtos/requests/{AssignCardRequest.js → ReverseCardMovementRequest.js} +9 -11
- package/bin/retailCards/dtos/requests/WriteOffCardStockRequest.d.ts +7 -0
- package/bin/{retailWizard/dtos/requests/CompleteSaleRequest.js → retailCards/dtos/requests/WriteOffCardStockRequest.js} +15 -12
- package/bin/retailCards/dtos/responses/CardBatchResponse.d.ts +10 -12
- package/bin/retailCards/dtos/responses/CardDeliveryResponse.d.ts +11 -0
- package/bin/retailCards/dtos/responses/CardStockBalanceResponse.d.ts +13 -0
- package/bin/retailCards/dtos/responses/CardStockMovementResponse.d.ts +19 -0
- package/bin/retailCards/dtos/responses/CardStockResponse.d.ts +12 -0
- package/bin/retailCards/enums/CardStockMovementTypeEnum.d.ts +15 -0
- package/bin/retailCards/enums/CardStockMovementTypeEnum.js +19 -0
- package/bin/retailCards/enums/CardWriteOffReasonEnum.d.ts +13 -0
- package/bin/retailCards/enums/CardWriteOffReasonEnum.js +17 -0
- package/bin/retailCards/events/CardBatchReceivedV1.d.ts +5 -3
- package/bin/retailCards/index.d.ts +9 -9
- package/bin/retailCards/index.js +9 -9
- package/bin/retailWizard/dtos/Sale.d.ts +2 -1
- package/bin/retailWizard/index.d.ts +0 -2
- package/bin/retailWizard/index.js +0 -2
- package/package.json +1 -1
- package/src/remittance/dtos/RemittanceFavoriteItem.ts +51 -0
- package/src/remittance/dtos/RemittanceFavoriteListResponse.ts +15 -0
- package/src/remittance/dtos/index.ts +2 -0
- package/src/remittance/enums/RemittanceCountryISO.ts +1 -0
- package/src/retailCards/dtos/requests/RegisterCardBatchRequest.ts +9 -7
- package/src/retailCards/dtos/requests/RegisterCardDeliveryRequest.ts +21 -0
- package/src/retailCards/dtos/requests/ReverseCardMovementRequest.ts +14 -0
- package/src/retailCards/dtos/requests/WriteOffCardStockRequest.ts +16 -0
- package/src/retailCards/dtos/responses/CardBatchResponse.ts +10 -13
- package/src/retailCards/dtos/responses/CardDeliveryResponse.ts +11 -0
- package/src/retailCards/dtos/responses/CardStockBalanceResponse.ts +13 -0
- package/src/retailCards/dtos/responses/CardStockMovementResponse.ts +20 -0
- package/src/retailCards/dtos/responses/CardStockResponse.ts +13 -0
- package/src/retailCards/enums/CardStockMovementTypeEnum.ts +15 -0
- package/src/retailCards/enums/CardWriteOffReasonEnum.ts +13 -0
- package/src/retailCards/events/CardBatchReceivedV1.ts +5 -3
- package/src/retailCards/index.ts +9 -9
- package/src/retailWizard/dtos/Sale.ts +2 -1
- package/src/retailWizard/index.ts +0 -2
- package/bin/retailCards/dtos/requests/AssignCardRequest.d.ts +0 -6
- package/bin/retailCards/dtos/requests/CancelCardRequest.d.ts +0 -5
- package/bin/retailCards/dtos/requests/CancelCardRequest.js +0 -22
- package/bin/retailCards/dtos/responses/RetailCardResponse.d.ts +0 -12
- package/bin/retailCards/enums/CardBatchStatusEnum.d.ts +0 -17
- package/bin/retailCards/enums/CardBatchStatusEnum.js +0 -21
- package/bin/retailCards/enums/CardCancelReasonEnum.d.ts +0 -13
- package/bin/retailCards/enums/CardCancelReasonEnum.js +0 -17
- package/bin/retailCards/enums/RetailCardStatusEnum.d.ts +0 -13
- package/bin/retailCards/enums/RetailCardStatusEnum.js +0 -17
- package/bin/retailCards/events/RetailCardAssignedV1.d.ts +0 -10
- package/bin/retailCards/events/RetailCardCancelledV1.d.ts +0 -9
- package/bin/retailCards/events/RetailCardReleasedV1.d.ts +0 -7
- package/bin/retailWizard/dtos/requests/CompleteSaleRequest.d.ts +0 -9
- package/bin/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.d.ts +0 -4
- package/src/retailCards/dtos/requests/AssignCardRequest.ts +0 -14
- package/src/retailCards/dtos/requests/CancelCardRequest.ts +0 -8
- package/src/retailCards/dtos/responses/RetailCardResponse.ts +0 -13
- package/src/retailCards/enums/CardBatchStatusEnum.ts +0 -17
- package/src/retailCards/enums/CardCancelReasonEnum.ts +0 -13
- package/src/retailCards/enums/RetailCardStatusEnum.ts +0 -13
- package/src/retailCards/events/RetailCardAssignedV1.ts +0 -10
- package/src/retailCards/events/RetailCardCancelledV1.ts +0 -10
- package/src/retailCards/events/RetailCardReleasedV1.ts +0 -7
- package/src/retailWizard/dtos/requests/CompleteSaleRequest.ts +0 -15
- package/src/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.ts +0 -9
- /package/bin/retailCards/dtos/responses/{RetailCardResponse.js → CardDeliveryResponse.js} +0 -0
- /package/bin/retailCards/{events/RetailCardAssignedV1.js → dtos/responses/CardStockBalanceResponse.js} +0 -0
- /package/bin/retailCards/{events/RetailCardCancelledV1.js → dtos/responses/CardStockMovementResponse.js} +0 -0
- /package/bin/retailCards/{events/RetailCardReleasedV1.js → dtos/responses/CardStockResponse.js} +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import { RegisterCardBatchRequest } from '../../../src/retailCards/dtos/requests/RegisterCardBatchRequest';
|
|
5
|
+
import { RegisterCardDeliveryRequest } from '../../../src/retailCards/dtos/requests/RegisterCardDeliveryRequest';
|
|
6
|
+
import { WriteOffCardStockRequest } from '../../../src/retailCards/dtos/requests/WriteOffCardStockRequest';
|
|
7
|
+
import { ReverseCardMovementRequest } from '../../../src/retailCards/dtos/requests/ReverseCardMovementRequest';
|
|
8
|
+
import { CardWriteOffReasonEnum } from '../../../src/retailCards/enums/CardWriteOffReasonEnum';
|
|
9
|
+
|
|
10
|
+
/** Valida como lo hace `retail-cards-business`: sin `excludeExtraneousValues`, o sea sin `@Expose`. */
|
|
11
|
+
function errorsOf<T extends object>(cls: new () => T, payload: Record<string, unknown>): string[] {
|
|
12
|
+
const dto = plainToInstance(cls, payload);
|
|
13
|
+
return validateSync(dto).map((e) => e.property);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe('RegisterCardBatchRequest — el lote se recibe por cantidad, no por números', () => {
|
|
17
|
+
it('acepta cantidad + folio de la remesa del proveedor', () => {
|
|
18
|
+
expect(
|
|
19
|
+
errorsOf(RegisterCardBatchRequest, {
|
|
20
|
+
storeId: 'STORE#1',
|
|
21
|
+
quantity: 50,
|
|
22
|
+
supplierBatchRef: 'REMESA-2026-001',
|
|
23
|
+
}),
|
|
24
|
+
).toEqual([]);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('el folio del proveedor es obligatorio: es lo único que distingue dos remesas iguales', () => {
|
|
28
|
+
expect(
|
|
29
|
+
errorsOf(RegisterCardBatchRequest, { storeId: 'STORE#1', quantity: 50 }),
|
|
30
|
+
).toContain('supplierBatchRef');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('rechaza una cantidad de 0, negativa o fraccionaria', () => {
|
|
34
|
+
for (const quantity of [0, -1, 1.5]) {
|
|
35
|
+
expect(
|
|
36
|
+
errorsOf(RegisterCardBatchRequest, {
|
|
37
|
+
storeId: 'STORE#1',
|
|
38
|
+
quantity,
|
|
39
|
+
supplierBatchRef: 'REMESA-2026-001',
|
|
40
|
+
}),
|
|
41
|
+
).toContain('quantity');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('rechaza una cantidad por encima del tope de 1000', () => {
|
|
46
|
+
expect(
|
|
47
|
+
errorsOf(RegisterCardBatchRequest, {
|
|
48
|
+
storeId: 'STORE#1',
|
|
49
|
+
quantity: 1001,
|
|
50
|
+
supplierBatchRef: 'REMESA-2026-001',
|
|
51
|
+
}),
|
|
52
|
+
).toContain('quantity');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('las notas son opcionales', () => {
|
|
56
|
+
expect(
|
|
57
|
+
errorsOf(RegisterCardBatchRequest, {
|
|
58
|
+
storeId: 'STORE#1',
|
|
59
|
+
quantity: 1,
|
|
60
|
+
supplierBatchRef: 'REMESA-2026-001',
|
|
61
|
+
notes: 'llegó abierta una caja',
|
|
62
|
+
}),
|
|
63
|
+
).toEqual([]);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
describe('RegisterCardDeliveryRequest — entrega en un solo acto, idempotente por sesión', () => {
|
|
68
|
+
it('acepta la entrega mínima', () => {
|
|
69
|
+
expect(
|
|
70
|
+
errorsOf(RegisterCardDeliveryRequest, {
|
|
71
|
+
customerId: 'CUS#1',
|
|
72
|
+
deliveredByUserId: 'USR#1',
|
|
73
|
+
sessionId: 'SES#1',
|
|
74
|
+
}),
|
|
75
|
+
).toEqual([]);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('el sessionId es obligatorio: es la clave de idempotencia de la entrega', () => {
|
|
79
|
+
expect(
|
|
80
|
+
errorsOf(RegisterCardDeliveryRequest, {
|
|
81
|
+
customerId: 'CUS#1',
|
|
82
|
+
deliveredByUserId: 'USR#1',
|
|
83
|
+
}),
|
|
84
|
+
).toContain('sessionId');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('exige cliente y vendedor', () => {
|
|
88
|
+
const errors = errorsOf(RegisterCardDeliveryRequest, { sessionId: 'SES#1' });
|
|
89
|
+
expect(errors).toContain('customerId');
|
|
90
|
+
expect(errors).toContain('deliveredByUserId');
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('el creditId es opcional (solo ventas a crédito)', () => {
|
|
94
|
+
expect(
|
|
95
|
+
errorsOf(RegisterCardDeliveryRequest, {
|
|
96
|
+
customerId: 'CUS#1',
|
|
97
|
+
deliveredByUserId: 'USR#1',
|
|
98
|
+
sessionId: 'SES#1',
|
|
99
|
+
creditId: 'CRE#1',
|
|
100
|
+
}),
|
|
101
|
+
).toEqual([]);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe('WriteOffCardStockRequest — baja de inventario por cantidad', () => {
|
|
106
|
+
it('acepta cantidad + motivo del catálogo', () => {
|
|
107
|
+
expect(
|
|
108
|
+
errorsOf(WriteOffCardStockRequest, {
|
|
109
|
+
quantity: 3,
|
|
110
|
+
reason: CardWriteOffReasonEnum.PLASTIC_DAMAGED,
|
|
111
|
+
}),
|
|
112
|
+
).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('rechaza un motivo fuera del catálogo', () => {
|
|
116
|
+
expect(
|
|
117
|
+
errorsOf(WriteOffCardStockRequest, { quantity: 3, reason: 'THEFT_REPORTED' }),
|
|
118
|
+
).toContain('reason');
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('rechaza una cantidad de 0 o fraccionaria', () => {
|
|
122
|
+
for (const quantity of [0, 2.5]) {
|
|
123
|
+
expect(
|
|
124
|
+
errorsOf(WriteOffCardStockRequest, {
|
|
125
|
+
quantity,
|
|
126
|
+
reason: CardWriteOffReasonEnum.LOST,
|
|
127
|
+
}),
|
|
128
|
+
).toContain('quantity');
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe('ReverseCardMovementRequest — revierte un asiento del libro mayor', () => {
|
|
134
|
+
it('acepta el asiento a revertir con su motivo', () => {
|
|
135
|
+
expect(
|
|
136
|
+
errorsOf(ReverseCardMovementRequest, {
|
|
137
|
+
movementSk: 'MOV#2026-08-14T10:00:00.000Z#abc',
|
|
138
|
+
reason: 'venta cancelada en mostrador',
|
|
139
|
+
}),
|
|
140
|
+
).toEqual([]);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('exige el asiento y el motivo', () => {
|
|
144
|
+
const errors = errorsOf(ReverseCardMovementRequest, {});
|
|
145
|
+
expect(errors).toContain('movementSk');
|
|
146
|
+
expect(errors).toContain('reason');
|
|
147
|
+
});
|
|
148
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ReceptionMethod } from "../enums/ReceptionMethod";
|
|
2
|
+
import { RemittanceCountryISO } from "../enums/RemittanceCountryISO";
|
|
3
|
+
/**
|
|
4
|
+
* Estado del beneficiario tal como lo ve el listado de favoritos de remesa.
|
|
5
|
+
* `UNKNOWN` = no se pudo enriquecer (el connector no respondió, o respondió y ese
|
|
6
|
+
* beneficiario no vino en su lista — favorito huérfano).
|
|
7
|
+
*/
|
|
8
|
+
export type RemittanceFavoriteStatus = "ACTIVE" | "DEACTIVATED" | "UNKNOWN";
|
|
9
|
+
/**
|
|
10
|
+
* Ítem de `GET /remittance/favorites`. Shape PLANO: mezcla lo propio de
|
|
11
|
+
* benefits-marketplace (alias, foto, orden, uso) con los datos vivos del beneficiario
|
|
12
|
+
* que devuelve uniteller-connector.
|
|
13
|
+
*
|
|
14
|
+
* Los campos del beneficiario son opcionales porque el listado degrada al snapshot
|
|
15
|
+
* denormalizado local cuando el connector no está disponible (`enriched: false`).
|
|
16
|
+
*/
|
|
17
|
+
export declare class RemittanceFavoriteItem {
|
|
18
|
+
id: string;
|
|
19
|
+
alias: string | null;
|
|
20
|
+
photo: string | null;
|
|
21
|
+
position: number;
|
|
22
|
+
usageCount: number;
|
|
23
|
+
lastUsedAt: number;
|
|
24
|
+
/** Handle opaco de UNIR. Viaja en claro, igual que en `FavoriteItem`. */
|
|
25
|
+
beneficiaryId: string;
|
|
26
|
+
firstName?: string;
|
|
27
|
+
middleName?: string;
|
|
28
|
+
lastName?: string;
|
|
29
|
+
secondLastName?: string;
|
|
30
|
+
phone?: string;
|
|
31
|
+
countryISO?: RemittanceCountryISO;
|
|
32
|
+
currencyISO?: string;
|
|
33
|
+
receptionMethod?: ReceptionMethod;
|
|
34
|
+
payerCode?: string;
|
|
35
|
+
payerName?: string;
|
|
36
|
+
payerBranchCode?: string;
|
|
37
|
+
payerBranchName?: string;
|
|
38
|
+
/** Cuenta completa para display (pedido de producto 2026-08-11). */
|
|
39
|
+
accNumber?: string;
|
|
40
|
+
accNumberLastFour?: string;
|
|
41
|
+
status: RemittanceFavoriteStatus;
|
|
42
|
+
/** `false` cuando el item se sirve solo con el snapshot denormalizado local. */
|
|
43
|
+
enriched: boolean;
|
|
44
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemittanceFavoriteItem = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ítem de `GET /remittance/favorites`. Shape PLANO: mezcla lo propio de
|
|
6
|
+
* benefits-marketplace (alias, foto, orden, uso) con los datos vivos del beneficiario
|
|
7
|
+
* que devuelve uniteller-connector.
|
|
8
|
+
*
|
|
9
|
+
* Los campos del beneficiario son opcionales porque el listado degrada al snapshot
|
|
10
|
+
* denormalizado local cuando el connector no está disponible (`enriched: false`).
|
|
11
|
+
*/
|
|
12
|
+
class RemittanceFavoriteItem {
|
|
13
|
+
}
|
|
14
|
+
exports.RemittanceFavoriteItem = RemittanceFavoriteItem;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RemittanceFavoriteItem } from "./RemittanceFavoriteItem";
|
|
2
|
+
/**
|
|
3
|
+
* Respuesta de `GET /remittance/favorites`.
|
|
4
|
+
*
|
|
5
|
+
* `totalActive` / `maxActive` son el cupo de beneficiarios de UniTeller: son
|
|
6
|
+
* GLOBALES del usuario y NO se ven afectados por el filtro `countryISO` — sirven
|
|
7
|
+
* para que el front sepa si puede dar de alta otro beneficiario. Ambos quedan
|
|
8
|
+
* ausentes si el connector no respondió.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RemittanceFavoriteListResponse {
|
|
11
|
+
items: RemittanceFavoriteItem[];
|
|
12
|
+
totalActive?: number;
|
|
13
|
+
maxActive?: number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemittanceFavoriteListResponse = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Respuesta de `GET /remittance/favorites`.
|
|
6
|
+
*
|
|
7
|
+
* `totalActive` / `maxActive` son el cupo de beneficiarios de UniTeller: son
|
|
8
|
+
* GLOBALES del usuario y NO se ven afectados por el filtro `countryISO` — sirven
|
|
9
|
+
* para que el front sepa si puede dar de alta otro beneficiario. Ambos quedan
|
|
10
|
+
* ausentes si el connector no respondió.
|
|
11
|
+
*/
|
|
12
|
+
class RemittanceFavoriteListResponse {
|
|
13
|
+
}
|
|
14
|
+
exports.RemittanceFavoriteListResponse = RemittanceFavoriteListResponse;
|
|
@@ -46,3 +46,5 @@ export * from "./RemittanceRule";
|
|
|
46
46
|
export * from "./RemittancePricingTable";
|
|
47
47
|
export * from "./RemittanceExceptionCatalog";
|
|
48
48
|
export * from "./RemittanceCountryConfig";
|
|
49
|
+
export * from "./RemittanceFavoriteItem";
|
|
50
|
+
export * from "./RemittanceFavoriteListResponse";
|
|
@@ -62,3 +62,5 @@ __exportStar(require("./RemittanceRule"), exports);
|
|
|
62
62
|
__exportStar(require("./RemittancePricingTable"), exports);
|
|
63
63
|
__exportStar(require("./RemittanceExceptionCatalog"), exports);
|
|
64
64
|
__exportStar(require("./RemittanceCountryConfig"), exports);
|
|
65
|
+
__exportStar(require("./RemittanceFavoriteItem"), exports);
|
|
66
|
+
__exportStar(require("./RemittanceFavoriteListResponse"), exports);
|
|
@@ -11,5 +11,6 @@ var RemittanceCountryISO;
|
|
|
11
11
|
RemittanceCountryISO["GT"] = "GT";
|
|
12
12
|
RemittanceCountryISO["SV"] = "SV";
|
|
13
13
|
RemittanceCountryISO["HN"] = "HN";
|
|
14
|
+
RemittanceCountryISO["NI"] = "NI";
|
|
14
15
|
RemittanceCountryISO["MX"] = "MX";
|
|
15
16
|
})(RemittanceCountryISO || (exports.RemittanceCountryISO = RemittanceCountryISO = {}));
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Body del registro (recepción) de un lote de tarjetas para una tienda. Los sobres llegan sellados:
|
|
3
|
+
* el lote lleva cantidad, no números.
|
|
4
|
+
*/
|
|
2
5
|
export declare class RegisterCardBatchRequest {
|
|
3
6
|
storeId: string;
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
quantity: number;
|
|
8
|
+
/** Folio de la remesa del proveedor: lo único que distingue dos entradas iguales a la misma tienda. */
|
|
9
|
+
supplierBatchRef: string;
|
|
6
10
|
notes?: string | null;
|
|
7
11
|
}
|
|
@@ -11,7 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.RegisterCardBatchRequest = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Body del registro (recepción) de un lote de tarjetas para una tienda. Los sobres llegan sellados:
|
|
16
|
+
* el lote lleva cantidad, no números.
|
|
17
|
+
*/
|
|
15
18
|
class RegisterCardBatchRequest {
|
|
16
19
|
}
|
|
17
20
|
exports.RegisterCardBatchRequest = RegisterCardBatchRequest;
|
|
@@ -24,13 +27,11 @@ __decorate([
|
|
|
24
27
|
(0, class_validator_1.Min)(1),
|
|
25
28
|
(0, class_validator_1.Max)(1000),
|
|
26
29
|
__metadata("design:type", Number)
|
|
27
|
-
], RegisterCardBatchRequest.prototype, "
|
|
30
|
+
], RegisterCardBatchRequest.prototype, "quantity", void 0);
|
|
28
31
|
__decorate([
|
|
29
|
-
(0, class_validator_1.
|
|
30
|
-
(
|
|
31
|
-
|
|
32
|
-
__metadata("design:type", Array)
|
|
33
|
-
], RegisterCardBatchRequest.prototype, "cardNumbers", void 0);
|
|
32
|
+
(0, class_validator_1.IsString)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], RegisterCardBatchRequest.prototype, "supplierBatchRef", void 0);
|
|
34
35
|
__decorate([
|
|
35
36
|
(0, class_validator_1.IsOptional)(),
|
|
36
37
|
(0, class_validator_1.IsString)(),
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Body de la entrega de una tarjeta física a un cliente. Descuenta el saldo de la tienda y asienta el
|
|
3
|
+
* movimiento en una sola operación: en mostrador asignar y entregar son el mismo acto.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RegisterCardDeliveryRequest {
|
|
6
|
+
customerId: string;
|
|
7
|
+
deliveredByUserId: string;
|
|
8
|
+
/** Clave de idempotencia de la entrega: un reintento devuelve el `deliveryId` original. */
|
|
9
|
+
sessionId: string;
|
|
10
|
+
creditId?: string;
|
|
11
|
+
}
|
|
@@ -9,15 +9,29 @@ 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.
|
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
|
12
|
+
exports.RegisterCardDeliveryRequest = void 0;
|
|
14
13
|
const class_validator_1 = require("class-validator");
|
|
15
|
-
/**
|
|
16
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Body de la entrega de una tarjeta física a un cliente. Descuenta el saldo de la tienda y asienta el
|
|
16
|
+
* movimiento en una sola operación: en mostrador asignar y entregar son el mismo acto.
|
|
17
|
+
*/
|
|
18
|
+
class RegisterCardDeliveryRequest {
|
|
17
19
|
}
|
|
18
|
-
exports.
|
|
20
|
+
exports.RegisterCardDeliveryRequest = RegisterCardDeliveryRequest;
|
|
19
21
|
__decorate([
|
|
20
|
-
(0, class_transformer_1.Expose)(),
|
|
21
22
|
(0, class_validator_1.IsString)(),
|
|
22
23
|
__metadata("design:type", String)
|
|
23
|
-
],
|
|
24
|
+
], RegisterCardDeliveryRequest.prototype, "customerId", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsString)(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], RegisterCardDeliveryRequest.prototype, "deliveredByUserId", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_validator_1.IsString)(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], RegisterCardDeliveryRequest.prototype, "sessionId", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsOptional)(),
|
|
35
|
+
(0, class_validator_1.IsString)(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], RegisterCardDeliveryRequest.prototype, "creditId", void 0);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Body del contraasiento que revierte un movimiento del libro mayor. No borra el asiento original:
|
|
3
|
+
* escribe uno nuevo que lo compensa.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ReverseCardMovementRequest {
|
|
6
|
+
/** `sk` del asiento que se revierte (`MOV#<isoTs>#<uuid>`). */
|
|
7
|
+
movementSk: string;
|
|
8
|
+
reason: string;
|
|
9
|
+
}
|
package/bin/retailCards/dtos/requests/{AssignCardRequest.js → ReverseCardMovementRequest.js}
RENAMED
|
@@ -9,22 +9,20 @@ 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.
|
|
12
|
+
exports.ReverseCardMovementRequest = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
-
/**
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Body del contraasiento que revierte un movimiento del libro mayor. No borra el asiento original:
|
|
16
|
+
* escribe uno nuevo que lo compensa.
|
|
17
|
+
*/
|
|
18
|
+
class ReverseCardMovementRequest {
|
|
16
19
|
}
|
|
17
|
-
exports.
|
|
20
|
+
exports.ReverseCardMovementRequest = ReverseCardMovementRequest;
|
|
18
21
|
__decorate([
|
|
19
22
|
(0, class_validator_1.IsString)(),
|
|
20
23
|
__metadata("design:type", String)
|
|
21
|
-
],
|
|
24
|
+
], ReverseCardMovementRequest.prototype, "movementSk", void 0);
|
|
22
25
|
__decorate([
|
|
23
26
|
(0, class_validator_1.IsString)(),
|
|
24
27
|
__metadata("design:type", String)
|
|
25
|
-
],
|
|
26
|
-
__decorate([
|
|
27
|
-
(0, class_validator_1.IsOptional)(),
|
|
28
|
-
(0, class_validator_1.IsString)(),
|
|
29
|
-
__metadata("design:type", String)
|
|
30
|
-
], AssignCardRequest.prototype, "creditId", void 0);
|
|
28
|
+
], ReverseCardMovementRequest.prototype, "reason", void 0);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CardWriteOffReasonEnum } from '../../enums/CardWriteOffReasonEnum';
|
|
2
|
+
/** Body de la baja de inventario de tarjetas de una tienda, por cantidad. */
|
|
3
|
+
export declare class WriteOffCardStockRequest {
|
|
4
|
+
quantity: number;
|
|
5
|
+
reason: CardWriteOffReasonEnum;
|
|
6
|
+
notes?: string | null;
|
|
7
|
+
}
|
|
@@ -9,21 +9,24 @@ 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.
|
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
|
12
|
+
exports.WriteOffCardStockRequest = void 0;
|
|
14
13
|
const class_validator_1 = require("class-validator");
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* la Sale con `UNIQ#FOLIO` y emite el outbox `SaleCompletedV1` en la MISMA tx. Cierra el prospecto
|
|
19
|
-
* vinculado si lo hay. `cardNumber` = tarjeta física entregada en tienda (S7). SureKeep Fase 2 — pista Retail.
|
|
20
|
-
*/
|
|
21
|
-
class CompleteSaleRequest {
|
|
14
|
+
const CardWriteOffReasonEnum_1 = require("../../enums/CardWriteOffReasonEnum");
|
|
15
|
+
/** Body de la baja de inventario de tarjetas de una tienda, por cantidad. */
|
|
16
|
+
class WriteOffCardStockRequest {
|
|
22
17
|
}
|
|
23
|
-
exports.
|
|
18
|
+
exports.WriteOffCardStockRequest = WriteOffCardStockRequest;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsInt)(),
|
|
21
|
+
(0, class_validator_1.Min)(1),
|
|
22
|
+
__metadata("design:type", Number)
|
|
23
|
+
], WriteOffCardStockRequest.prototype, "quantity", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsEnum)(CardWriteOffReasonEnum_1.CardWriteOffReasonEnum),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], WriteOffCardStockRequest.prototype, "reason", void 0);
|
|
24
28
|
__decorate([
|
|
25
|
-
(0, class_transformer_1.Expose)(),
|
|
26
29
|
(0, class_validator_1.IsOptional)(),
|
|
27
30
|
(0, class_validator_1.IsString)(),
|
|
28
31
|
__metadata("design:type", String)
|
|
29
|
-
],
|
|
32
|
+
], WriteOffCardStockRequest.prototype, "notes", void 0);
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Lote de tarjetas recibido por una tienda (`sk = BATCH#<isoTs>#<uuid>`). Es un hecho histórico: el
|
|
3
|
+
* lote no cambia de estado ni lleva conteos, esos viven en el saldo.
|
|
4
|
+
*/
|
|
3
5
|
export interface CardBatchResponse {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
batchSk: string;
|
|
7
|
+
/** Folio de la remesa del proveedor. */
|
|
8
|
+
supplierBatchRef: string;
|
|
6
9
|
storeId: string;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
availableCount: number;
|
|
11
|
-
assignedCount: number;
|
|
12
|
-
cancelledCount: number;
|
|
13
|
-
status: CardBatchStatusEnum;
|
|
10
|
+
retailerId: string;
|
|
11
|
+
quantity: number;
|
|
12
|
+
notes: string | null;
|
|
14
13
|
receivedAt: string;
|
|
15
14
|
receivedByUserId: string;
|
|
16
|
-
notes: string | null;
|
|
17
15
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resultado de entregar una tarjeta física a un cliente. Un reintento con el mismo `sessionId`
|
|
3
|
+
* devuelve este mismo `deliveryId` con 200, no un error.
|
|
4
|
+
*/
|
|
5
|
+
export interface CardDeliveryResponse {
|
|
6
|
+
deliveryId: string;
|
|
7
|
+
movementSk: string;
|
|
8
|
+
/** Saldo disponible que quedó en la tienda después de descontar la entrega. */
|
|
9
|
+
availableAfter: number;
|
|
10
|
+
occurredAt: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Saldo vigente de tarjetas físicas de una tienda (`sk = BALANCE`). Es reconstruible sumando los
|
|
3
|
+
* asientos del libro mayor.
|
|
4
|
+
*/
|
|
5
|
+
export interface CardStockBalanceResponse {
|
|
6
|
+
storeId: string;
|
|
7
|
+
retailerId: string;
|
|
8
|
+
/** Unidades disponibles para entregar. Sin saldo no hay entrega. */
|
|
9
|
+
available: number;
|
|
10
|
+
deliveredTotal: number;
|
|
11
|
+
writtenOffTotal: number;
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CardStockMovementTypeEnum } from '../../enums/CardStockMovementTypeEnum';
|
|
2
|
+
import { CardWriteOffReasonEnum } from '../../enums/CardWriteOffReasonEnum';
|
|
3
|
+
/** Asiento del libro mayor de tarjetas de una tienda (`sk = MOV#<isoTs>#<uuid>`). */
|
|
4
|
+
export interface CardStockMovementResponse {
|
|
5
|
+
movementSk: string;
|
|
6
|
+
type: CardStockMovementTypeEnum;
|
|
7
|
+
/** Con signo: positiva en las entradas, negativa en las salidas. */
|
|
8
|
+
quantity: number;
|
|
9
|
+
occurredAt: string;
|
|
10
|
+
actorUserId: string;
|
|
11
|
+
/** Cliente que recibió la tarjeta; solo en `OUT_DELIVERY`. */
|
|
12
|
+
customerId: string | null;
|
|
13
|
+
/** Motivo catalogado de la baja; solo en `OUT_WRITE_OFF`. */
|
|
14
|
+
reason: CardWriteOffReasonEnum | null;
|
|
15
|
+
/** Explicación libre del contraasiento; solo en `REVERSAL`. */
|
|
16
|
+
reversalReason: string | null;
|
|
17
|
+
/** `sk` referenciado: el lote en `IN_BATCH`, el asiento revertido en `REVERSAL`. */
|
|
18
|
+
refSk: string | null;
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardStockBalanceResponse } from './CardStockBalanceResponse';
|
|
2
|
+
import { CardStockMovementResponse } from './CardStockMovementResponse';
|
|
3
|
+
/**
|
|
4
|
+
* Pantalla de inventario de una tienda: el saldo vigente más una página de asientos. Ambos salen de
|
|
5
|
+
* la misma partición, así que viajan en una sola respuesta.
|
|
6
|
+
*/
|
|
7
|
+
export interface CardStockResponse {
|
|
8
|
+
balance: CardStockBalanceResponse;
|
|
9
|
+
movements: CardStockMovementResponse[];
|
|
10
|
+
count: number;
|
|
11
|
+
nextToken?: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipo de asiento del libro mayor de tarjetas físicas (`sk = MOV#<isoTs>#<uuid>`).
|
|
3
|
+
* @enum {string}
|
|
4
|
+
*
|
|
5
|
+
* @property {string} IN_BATCH - Entrada por recepción de un lote del proveedor (cantidad positiva).
|
|
6
|
+
* @property {string} OUT_DELIVERY - Salida por entrega de una tarjeta a un cliente en mostrador.
|
|
7
|
+
* @property {string} OUT_WRITE_OFF - Salida por baja de inventario (plástico dañado, extravío, robo).
|
|
8
|
+
* @property {string} REVERSAL - Contraasiento que revierte un movimiento previo vía `refSk`.
|
|
9
|
+
*/
|
|
10
|
+
export declare enum CardStockMovementTypeEnum {
|
|
11
|
+
IN_BATCH = "IN_BATCH",
|
|
12
|
+
OUT_DELIVERY = "OUT_DELIVERY",
|
|
13
|
+
OUT_WRITE_OFF = "OUT_WRITE_OFF",
|
|
14
|
+
REVERSAL = "REVERSAL"
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CardStockMovementTypeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Tipo de asiento del libro mayor de tarjetas físicas (`sk = MOV#<isoTs>#<uuid>`).
|
|
6
|
+
* @enum {string}
|
|
7
|
+
*
|
|
8
|
+
* @property {string} IN_BATCH - Entrada por recepción de un lote del proveedor (cantidad positiva).
|
|
9
|
+
* @property {string} OUT_DELIVERY - Salida por entrega de una tarjeta a un cliente en mostrador.
|
|
10
|
+
* @property {string} OUT_WRITE_OFF - Salida por baja de inventario (plástico dañado, extravío, robo).
|
|
11
|
+
* @property {string} REVERSAL - Contraasiento que revierte un movimiento previo vía `refSk`.
|
|
12
|
+
*/
|
|
13
|
+
var CardStockMovementTypeEnum;
|
|
14
|
+
(function (CardStockMovementTypeEnum) {
|
|
15
|
+
CardStockMovementTypeEnum["IN_BATCH"] = "IN_BATCH";
|
|
16
|
+
CardStockMovementTypeEnum["OUT_DELIVERY"] = "OUT_DELIVERY";
|
|
17
|
+
CardStockMovementTypeEnum["OUT_WRITE_OFF"] = "OUT_WRITE_OFF";
|
|
18
|
+
CardStockMovementTypeEnum["REVERSAL"] = "REVERSAL";
|
|
19
|
+
})(CardStockMovementTypeEnum || (exports.CardStockMovementTypeEnum = CardStockMovementTypeEnum = {}));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Motivo de una baja de inventario de tarjetas físicas por cantidad.
|
|
3
|
+
* @enum {string}
|
|
4
|
+
*
|
|
5
|
+
* @property {string} PLASTIC_DAMAGED - Plásticos dañados, inservibles para entregar.
|
|
6
|
+
* @property {string} LOST - Unidades extraviadas en la tienda.
|
|
7
|
+
* @property {string} STOLEN - Unidades robadas del inventario de la tienda.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum CardWriteOffReasonEnum {
|
|
10
|
+
PLASTIC_DAMAGED = "PLASTIC_DAMAGED",
|
|
11
|
+
LOST = "LOST",
|
|
12
|
+
STOLEN = "STOLEN"
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CardWriteOffReasonEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Motivo de una baja de inventario de tarjetas físicas por cantidad.
|
|
6
|
+
* @enum {string}
|
|
7
|
+
*
|
|
8
|
+
* @property {string} PLASTIC_DAMAGED - Plásticos dañados, inservibles para entregar.
|
|
9
|
+
* @property {string} LOST - Unidades extraviadas en la tienda.
|
|
10
|
+
* @property {string} STOLEN - Unidades robadas del inventario de la tienda.
|
|
11
|
+
*/
|
|
12
|
+
var CardWriteOffReasonEnum;
|
|
13
|
+
(function (CardWriteOffReasonEnum) {
|
|
14
|
+
CardWriteOffReasonEnum["PLASTIC_DAMAGED"] = "PLASTIC_DAMAGED";
|
|
15
|
+
CardWriteOffReasonEnum["LOST"] = "LOST";
|
|
16
|
+
CardWriteOffReasonEnum["STOLEN"] = "STOLEN";
|
|
17
|
+
})(CardWriteOffReasonEnum || (exports.CardWriteOffReasonEnum = CardWriteOffReasonEnum = {}));
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
/** Emitido cuando un lote de tarjetas
|
|
1
|
+
/** Emitido cuando una tienda recibe un lote de tarjetas físicas. */
|
|
2
2
|
export interface CardBatchReceivedV1 {
|
|
3
|
-
|
|
3
|
+
/** `sk` del lote en la partición de la tienda (`BATCH#<isoTs>#<uuid>`). */
|
|
4
|
+
batchSk: string;
|
|
5
|
+
supplierBatchRef: string;
|
|
4
6
|
retailerId: string;
|
|
5
7
|
storeId: string;
|
|
6
|
-
|
|
8
|
+
quantity: number;
|
|
7
9
|
receivedByUserId: string;
|
|
8
10
|
occurredAt: string;
|
|
9
11
|
}
|