@fiado/type-kit 3.310.1 → 3.314.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/_test_/unit/retailWizard/deleteProductRequest.test.ts +24 -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/AppOnboardingStep.d.ts +11 -0
- package/bin/retailWizard/dtos/AppOnboardingStep.js +2 -0
- package/bin/retailWizard/dtos/Sale.d.ts +2 -1
- package/bin/retailWizard/dtos/requests/DeleteProductRequest.d.ts +2 -1
- package/bin/retailWizard/dtos/requests/DeleteProductRequest.js +1 -0
- package/bin/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.d.ts +21 -0
- package/bin/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.js +2 -0
- package/bin/retailWizard/dtos/responses/AppOnboardingResponse.d.ts +14 -0
- package/bin/retailWizard/dtos/responses/AppOnboardingResponse.js +2 -0
- package/bin/retailWizard/enums/AppOnboardingStepEnum.d.ts +14 -0
- package/bin/retailWizard/enums/AppOnboardingStepEnum.js +18 -0
- package/bin/retailWizard/enums/AppOnboardingStepStatusEnum.d.ts +12 -0
- package/bin/retailWizard/enums/AppOnboardingStepStatusEnum.js +16 -0
- package/bin/retailWizard/index.d.ts +5 -2
- package/bin/retailWizard/index.js +5 -2
- package/package.json +1 -1
- 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/AppOnboardingStep.ts +12 -0
- package/src/retailWizard/dtos/Sale.ts +2 -1
- package/src/retailWizard/dtos/requests/DeleteProductRequest.ts +4 -2
- package/src/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.ts +22 -0
- package/src/retailWizard/dtos/responses/AppOnboardingResponse.ts +15 -0
- package/src/retailWizard/enums/AppOnboardingStepEnum.ts +14 -0
- package/src/retailWizard/enums/AppOnboardingStepStatusEnum.ts +12 -0
- package/src/retailWizard/index.ts +5 -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,21 @@
|
|
|
1
|
+
import type { WizardStateEnum } from '../../enums/WizardStateEnum';
|
|
2
|
+
import type { WizardStepEnum } from '../../enums/WizardStepEnum';
|
|
3
|
+
/**
|
|
4
|
+
* GET /wizard/sessions?phone=... — la venta en curso de un telefono, para la pestana «Wizard» de la
|
|
5
|
+
* pantalla Prospectos. El prospecto no guarda la sesion, asi que el telefono es la unica llave.
|
|
6
|
+
*
|
|
7
|
+
* `found: false` es la respuesta NORMAL: la mayoria de los prospectos no tienen venta empezada, y una
|
|
8
|
+
* sesion activa de OTRA tienda devuelve lo mismo (DEC-018 la trata como inexistente para el vendedor).
|
|
9
|
+
*
|
|
10
|
+
* SureKeep Fase 2 — pista Retail.
|
|
11
|
+
*/
|
|
12
|
+
export interface ActiveSessionByPhoneResponse {
|
|
13
|
+
/** Unico campo con el que el front decide si pinta el paso o un guion. */
|
|
14
|
+
found: boolean;
|
|
15
|
+
/** `null` cuando `found` es `false`. */
|
|
16
|
+
sessionId: string | null;
|
|
17
|
+
/** Paso en el que se quedo la venta. `null` cuando `found` es `false`. */
|
|
18
|
+
currentStep: WizardStepEnum | null;
|
|
19
|
+
/** Hoy siempre `ACTIVE`: la busqueda filtra por ese estado. `null` cuando `found` es `false`. */
|
|
20
|
+
state: WizardStateEnum | null;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AppOnboardingStep } from '../AppOnboardingStep';
|
|
2
|
+
/**
|
|
3
|
+
* GET /wizard/sessions/:id/app-onboarding — las condiciones del onboarding que el cliente hace en
|
|
4
|
+
* la app Fiado.
|
|
5
|
+
*
|
|
6
|
+
* Lo pollea el paso 09 del wizard, que dejó de pedirle al vendedor que teclee el número de tarjeta.
|
|
7
|
+
* SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export interface AppOnboardingResponse {
|
|
10
|
+
/** Las cuatro condiciones, siempre las cuatro, en orden fijo. */
|
|
11
|
+
steps: AppOnboardingStep[];
|
|
12
|
+
/** Ninguna quedó en `PENDING`. Una `UNVERIFIABLE` NO bloquea: cuenta como saldada. */
|
|
13
|
+
allSettled: boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condiciones del onboarding que el cliente hace en la app Fiado, y que el paso 09 del wizard
|
|
3
|
+
* pollea en vez de pedirle al vendedor que las teclee. SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum AppOnboardingStepEnum {
|
|
6
|
+
/** Ya puso su contraseña sobre la cuenta que abrió la tienda. */
|
|
7
|
+
PASSWORD = "PASSWORD",
|
|
8
|
+
/** Ya firmó el contrato MX. */
|
|
9
|
+
CONTRACT_SIGNED = "CONTRACT_SIGNED",
|
|
10
|
+
/** Ya activó su número secreto de la app (2FA/transacciones, NO el NIP de la tarjeta). */
|
|
11
|
+
SECRET_NUMBER = "SECRET_NUMBER",
|
|
12
|
+
/** Ya tiene una tarjeta física vigente. */
|
|
13
|
+
PHYSICAL_CARD = "PHYSICAL_CARD"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppOnboardingStepEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Condiciones del onboarding que el cliente hace en la app Fiado, y que el paso 09 del wizard
|
|
6
|
+
* pollea en vez de pedirle al vendedor que las teclee. SureKeep Fase 2 — pista Retail.
|
|
7
|
+
*/
|
|
8
|
+
var AppOnboardingStepEnum;
|
|
9
|
+
(function (AppOnboardingStepEnum) {
|
|
10
|
+
/** Ya puso su contraseña sobre la cuenta que abrió la tienda. */
|
|
11
|
+
AppOnboardingStepEnum["PASSWORD"] = "PASSWORD";
|
|
12
|
+
/** Ya firmó el contrato MX. */
|
|
13
|
+
AppOnboardingStepEnum["CONTRACT_SIGNED"] = "CONTRACT_SIGNED";
|
|
14
|
+
/** Ya activó su número secreto de la app (2FA/transacciones, NO el NIP de la tarjeta). */
|
|
15
|
+
AppOnboardingStepEnum["SECRET_NUMBER"] = "SECRET_NUMBER";
|
|
16
|
+
/** Ya tiene una tarjeta física vigente. */
|
|
17
|
+
AppOnboardingStepEnum["PHYSICAL_CARD"] = "PHYSICAL_CARD";
|
|
18
|
+
})(AppOnboardingStepEnum || (exports.AppOnboardingStepEnum = AppOnboardingStepEnum = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado de una condición del onboarding en la app. SureKeep Fase 2 — pista Retail.
|
|
3
|
+
*
|
|
4
|
+
* `UNVERIFIABLE` existe para no aplastar «no cumplió» contra «no pudimos saber»: un booleano le
|
|
5
|
+
* mostraría al vendedor la palomita apagada de un cliente que sí lo hizo, cuando lo que se cayó es
|
|
6
|
+
* un lambda nuestro. NO bloquea: cuenta como saldada.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum AppOnboardingStepStatusEnum {
|
|
9
|
+
COMPLETED = "COMPLETED",
|
|
10
|
+
PENDING = "PENDING",
|
|
11
|
+
UNVERIFIABLE = "UNVERIFIABLE"
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppOnboardingStepStatusEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Estado de una condición del onboarding en la app. SureKeep Fase 2 — pista Retail.
|
|
6
|
+
*
|
|
7
|
+
* `UNVERIFIABLE` existe para no aplastar «no cumplió» contra «no pudimos saber»: un booleano le
|
|
8
|
+
* mostraría al vendedor la palomita apagada de un cliente que sí lo hizo, cuando lo que se cayó es
|
|
9
|
+
* un lambda nuestro. NO bloquea: cuenta como saldada.
|
|
10
|
+
*/
|
|
11
|
+
var AppOnboardingStepStatusEnum;
|
|
12
|
+
(function (AppOnboardingStepStatusEnum) {
|
|
13
|
+
AppOnboardingStepStatusEnum["COMPLETED"] = "COMPLETED";
|
|
14
|
+
AppOnboardingStepStatusEnum["PENDING"] = "PENDING";
|
|
15
|
+
AppOnboardingStepStatusEnum["UNVERIFIABLE"] = "UNVERIFIABLE";
|
|
16
|
+
})(AppOnboardingStepStatusEnum || (exports.AppOnboardingStepStatusEnum = AppOnboardingStepStatusEnum = {}));
|
|
@@ -17,6 +17,8 @@ export * from './enums/AccountVerdictEnum';
|
|
|
17
17
|
export * from './enums/AccountOutcomeEnum';
|
|
18
18
|
export * from './enums/AccountStepStatusEnum';
|
|
19
19
|
export * from './enums/ResumeReasonEnum';
|
|
20
|
+
export * from './enums/AppOnboardingStepEnum';
|
|
21
|
+
export * from './enums/AppOnboardingStepStatusEnum';
|
|
20
22
|
export * from './dtos/WizardConsents';
|
|
21
23
|
export * from './dtos/WizardPayment';
|
|
22
24
|
export * from './dtos/WizardProduct';
|
|
@@ -27,6 +29,7 @@ export * from './dtos/WizardBeneficiary';
|
|
|
27
29
|
export * from './dtos/WizardLoan';
|
|
28
30
|
export * from './dtos/WizardCreditSummary';
|
|
29
31
|
export * from './dtos/AccountStep';
|
|
32
|
+
export * from './dtos/AppOnboardingStep';
|
|
30
33
|
export * from './dtos/WizardResumeTarget';
|
|
31
34
|
export * from './dtos/WizardSession';
|
|
32
35
|
export * from './dtos/OtpVerification';
|
|
@@ -49,9 +52,7 @@ export * from './dtos/requests/DeleteProductRequest';
|
|
|
49
52
|
export * from './dtos/requests/SetPaymentMethodRequest';
|
|
50
53
|
export * from './dtos/requests/ExternalReferralRequest';
|
|
51
54
|
export * from './dtos/requests/RegisterPaymentRequest';
|
|
52
|
-
export * from './dtos/requests/CompleteSaleRequest';
|
|
53
55
|
export * from './dtos/requests/AppInstallLinkRequest';
|
|
54
|
-
export * from './dtos/requests/MarkPcfCardDeliveredRequest';
|
|
55
56
|
export * from './dtos/requests/ConfirmAddressRequest';
|
|
56
57
|
export * from './dtos/requests/ProfileQuestionsRequest';
|
|
57
58
|
export * from './dtos/requests/SaveBeneficiaryRequest';
|
|
@@ -77,6 +78,8 @@ export * from './dtos/responses/SignatureSendOtpResponse';
|
|
|
77
78
|
export * from './dtos/responses/SignatureSignResponse';
|
|
78
79
|
export * from './dtos/responses/RegisterDeviceResponse';
|
|
79
80
|
export * from './dtos/responses/AccountStatusResponse';
|
|
81
|
+
export * from './dtos/responses/ActiveSessionByPhoneResponse';
|
|
82
|
+
export * from './dtos/responses/AppOnboardingResponse';
|
|
80
83
|
export * from './enums/SaleFinancierEnum';
|
|
81
84
|
export * from './enums/SaleExceptionTypeEnum';
|
|
82
85
|
export * from './enums/SaleExceptionStatusEnum';
|
|
@@ -35,6 +35,8 @@ __exportStar(require("./enums/AccountVerdictEnum"), exports);
|
|
|
35
35
|
__exportStar(require("./enums/AccountOutcomeEnum"), exports);
|
|
36
36
|
__exportStar(require("./enums/AccountStepStatusEnum"), exports);
|
|
37
37
|
__exportStar(require("./enums/ResumeReasonEnum"), exports);
|
|
38
|
+
__exportStar(require("./enums/AppOnboardingStepEnum"), exports);
|
|
39
|
+
__exportStar(require("./enums/AppOnboardingStepStatusEnum"), exports);
|
|
38
40
|
// DTOs anidados
|
|
39
41
|
__exportStar(require("./dtos/WizardConsents"), exports);
|
|
40
42
|
__exportStar(require("./dtos/WizardPayment"), exports);
|
|
@@ -46,6 +48,7 @@ __exportStar(require("./dtos/WizardBeneficiary"), exports);
|
|
|
46
48
|
__exportStar(require("./dtos/WizardLoan"), exports);
|
|
47
49
|
__exportStar(require("./dtos/WizardCreditSummary"), exports);
|
|
48
50
|
__exportStar(require("./dtos/AccountStep"), exports);
|
|
51
|
+
__exportStar(require("./dtos/AppOnboardingStep"), exports);
|
|
49
52
|
__exportStar(require("./dtos/WizardResumeTarget"), exports);
|
|
50
53
|
// Entidades principales (shapes de estado/persistencia — planas)
|
|
51
54
|
__exportStar(require("./dtos/WizardSession"), exports);
|
|
@@ -71,9 +74,7 @@ __exportStar(require("./dtos/requests/DeleteProductRequest"), exports);
|
|
|
71
74
|
__exportStar(require("./dtos/requests/SetPaymentMethodRequest"), exports);
|
|
72
75
|
__exportStar(require("./dtos/requests/ExternalReferralRequest"), exports);
|
|
73
76
|
__exportStar(require("./dtos/requests/RegisterPaymentRequest"), exports);
|
|
74
|
-
__exportStar(require("./dtos/requests/CompleteSaleRequest"), exports);
|
|
75
77
|
__exportStar(require("./dtos/requests/AppInstallLinkRequest"), exports);
|
|
76
|
-
__exportStar(require("./dtos/requests/MarkPcfCardDeliveredRequest"), exports);
|
|
77
78
|
__exportStar(require("./dtos/requests/ConfirmAddressRequest"), exports);
|
|
78
79
|
__exportStar(require("./dtos/requests/ProfileQuestionsRequest"), exports);
|
|
79
80
|
__exportStar(require("./dtos/requests/SaveBeneficiaryRequest"), exports);
|
|
@@ -100,6 +101,8 @@ __exportStar(require("./dtos/responses/SignatureSendOtpResponse"), exports);
|
|
|
100
101
|
__exportStar(require("./dtos/responses/SignatureSignResponse"), exports);
|
|
101
102
|
__exportStar(require("./dtos/responses/RegisterDeviceResponse"), exports);
|
|
102
103
|
__exportStar(require("./dtos/responses/AccountStatusResponse"), exports);
|
|
104
|
+
__exportStar(require("./dtos/responses/ActiveSessionByPhoneResponse"), exports);
|
|
105
|
+
__exportStar(require("./dtos/responses/AppOnboardingResponse"), exports);
|
|
103
106
|
// ── F3 · Backoffice VentasLuga ────────────────────────────────────────────────
|
|
104
107
|
// Enums
|
|
105
108
|
__exportStar(require("./enums/SaleFinancierEnum"), exports);
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Body del registro (recepción) de un lote de tarjetas para una tienda. Los sobres llegan sellados:
|
|
5
|
+
* el lote lleva cantidad, no números.
|
|
6
|
+
*/
|
|
4
7
|
export class RegisterCardBatchRequest {
|
|
5
8
|
@IsString()
|
|
6
9
|
storeId!: string;
|
|
@@ -8,12 +11,11 @@ export class RegisterCardBatchRequest {
|
|
|
8
11
|
@IsInt()
|
|
9
12
|
@Min(1)
|
|
10
13
|
@Max(1000)
|
|
11
|
-
|
|
14
|
+
quantity!: number;
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
@
|
|
15
|
-
|
|
16
|
-
cardNumbers!: string[];
|
|
16
|
+
/** Folio de la remesa del proveedor: lo único que distingue dos entradas iguales a la misma tienda. */
|
|
17
|
+
@IsString()
|
|
18
|
+
supplierBatchRef!: string;
|
|
17
19
|
|
|
18
20
|
@IsOptional()
|
|
19
21
|
@IsString()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IsOptional, IsString } from 'class-validator';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Body de la entrega de una tarjeta física a un cliente. Descuenta el saldo de la tienda y asienta el
|
|
5
|
+
* movimiento en una sola operación: en mostrador asignar y entregar son el mismo acto.
|
|
6
|
+
*/
|
|
7
|
+
export class RegisterCardDeliveryRequest {
|
|
8
|
+
@IsString()
|
|
9
|
+
customerId!: string;
|
|
10
|
+
|
|
11
|
+
@IsString()
|
|
12
|
+
deliveredByUserId!: string;
|
|
13
|
+
|
|
14
|
+
/** Clave de idempotencia de la entrega: un reintento devuelve el `deliveryId` original. */
|
|
15
|
+
@IsString()
|
|
16
|
+
sessionId!: string;
|
|
17
|
+
|
|
18
|
+
@IsOptional()
|
|
19
|
+
@IsString()
|
|
20
|
+
creditId?: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IsString } from 'class-validator';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Body del contraasiento que revierte un movimiento del libro mayor. No borra el asiento original:
|
|
5
|
+
* escribe uno nuevo que lo compensa.
|
|
6
|
+
*/
|
|
7
|
+
export class ReverseCardMovementRequest {
|
|
8
|
+
/** `sk` del asiento que se revierte (`MOV#<isoTs>#<uuid>`). */
|
|
9
|
+
@IsString()
|
|
10
|
+
movementSk!: string;
|
|
11
|
+
|
|
12
|
+
@IsString()
|
|
13
|
+
reason!: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IsEnum, IsInt, IsOptional, IsString, Min } from 'class-validator';
|
|
2
|
+
import { CardWriteOffReasonEnum } from '../../enums/CardWriteOffReasonEnum';
|
|
3
|
+
|
|
4
|
+
/** Body de la baja de inventario de tarjetas de una tienda, por cantidad. */
|
|
5
|
+
export class WriteOffCardStockRequest {
|
|
6
|
+
@IsInt()
|
|
7
|
+
@Min(1)
|
|
8
|
+
quantity!: number;
|
|
9
|
+
|
|
10
|
+
@IsEnum(CardWriteOffReasonEnum)
|
|
11
|
+
reason!: CardWriteOffReasonEnum;
|
|
12
|
+
|
|
13
|
+
@IsOptional()
|
|
14
|
+
@IsString()
|
|
15
|
+
notes?: string | null;
|
|
16
|
+
}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
*/
|
|
4
5
|
export interface CardBatchResponse {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
batchSk: string;
|
|
7
|
+
/** Folio de la remesa del proveedor. */
|
|
8
|
+
supplierBatchRef: string;
|
|
7
9
|
storeId: string;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
availableCount: number;
|
|
12
|
-
assignedCount: number;
|
|
13
|
-
cancelledCount: number;
|
|
14
|
-
status: CardBatchStatusEnum;
|
|
10
|
+
retailerId: string;
|
|
11
|
+
quantity: number;
|
|
12
|
+
notes: string | null;
|
|
15
13
|
receivedAt: string;
|
|
16
14
|
receivedByUserId: string;
|
|
17
|
-
notes: string | null;
|
|
18
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,20 @@
|
|
|
1
|
+
import { CardStockMovementTypeEnum } from '../../enums/CardStockMovementTypeEnum';
|
|
2
|
+
import { CardWriteOffReasonEnum } from '../../enums/CardWriteOffReasonEnum';
|
|
3
|
+
|
|
4
|
+
/** Asiento del libro mayor de tarjetas de una tienda (`sk = MOV#<isoTs>#<uuid>`). */
|
|
5
|
+
export interface CardStockMovementResponse {
|
|
6
|
+
movementSk: string;
|
|
7
|
+
type: CardStockMovementTypeEnum;
|
|
8
|
+
/** Con signo: positiva en las entradas, negativa en las salidas. */
|
|
9
|
+
quantity: number;
|
|
10
|
+
occurredAt: string;
|
|
11
|
+
actorUserId: string;
|
|
12
|
+
/** Cliente que recibió la tarjeta; solo en `OUT_DELIVERY`. */
|
|
13
|
+
customerId: string | null;
|
|
14
|
+
/** Motivo catalogado de la baja; solo en `OUT_WRITE_OFF`. */
|
|
15
|
+
reason: CardWriteOffReasonEnum | null;
|
|
16
|
+
/** Explicación libre del contraasiento; solo en `REVERSAL`. */
|
|
17
|
+
reversalReason: string | null;
|
|
18
|
+
/** `sk` referenciado: el lote en `IN_BATCH`, el asiento revertido en `REVERSAL`. */
|
|
19
|
+
refSk: string | null;
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardStockBalanceResponse } from './CardStockBalanceResponse';
|
|
2
|
+
import { CardStockMovementResponse } from './CardStockMovementResponse';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Pantalla de inventario de una tienda: el saldo vigente más una página de asientos. Ambos salen de
|
|
6
|
+
* la misma partición, así que viajan en una sola respuesta.
|
|
7
|
+
*/
|
|
8
|
+
export interface CardStockResponse {
|
|
9
|
+
balance: CardStockBalanceResponse;
|
|
10
|
+
movements: CardStockMovementResponse[];
|
|
11
|
+
count: number;
|
|
12
|
+
nextToken?: string;
|
|
13
|
+
}
|
|
@@ -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 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,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 enum CardWriteOffReasonEnum {
|
|
10
|
+
PLASTIC_DAMAGED = 'PLASTIC_DAMAGED',
|
|
11
|
+
LOST = 'LOST',
|
|
12
|
+
STOLEN = 'STOLEN',
|
|
13
|
+
}
|
|
@@ -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
|
}
|
package/src/retailCards/index.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export * from './enums/
|
|
2
|
-
export * from './enums/
|
|
3
|
-
export * from './enums/CardCancelReasonEnum';
|
|
1
|
+
export * from './enums/CardStockMovementTypeEnum';
|
|
2
|
+
export * from './enums/CardWriteOffReasonEnum';
|
|
4
3
|
|
|
5
4
|
// Request DTOs (input validado por endpoint)
|
|
6
5
|
export * from './dtos/requests/RegisterCardBatchRequest';
|
|
7
|
-
export * from './dtos/requests/
|
|
8
|
-
export * from './dtos/requests/
|
|
6
|
+
export * from './dtos/requests/RegisterCardDeliveryRequest';
|
|
7
|
+
export * from './dtos/requests/WriteOffCardStockRequest';
|
|
8
|
+
export * from './dtos/requests/ReverseCardMovementRequest';
|
|
9
9
|
|
|
10
10
|
// Response DTOs
|
|
11
11
|
export * from './dtos/responses/CardBatchResponse';
|
|
12
|
-
export * from './dtos/responses/
|
|
12
|
+
export * from './dtos/responses/CardDeliveryResponse';
|
|
13
|
+
export * from './dtos/responses/CardStockBalanceResponse';
|
|
14
|
+
export * from './dtos/responses/CardStockMovementResponse';
|
|
15
|
+
export * from './dtos/responses/CardStockResponse';
|
|
13
16
|
export * from './dtos/responses/StockAlertItem';
|
|
14
17
|
export * from './dtos/responses/StockAlertsResponse';
|
|
15
18
|
|
|
16
19
|
// Contratos de eventos (PascalCase + sufijo V1)
|
|
17
20
|
export * from './events/CardBatchReceivedV1';
|
|
18
|
-
export * from './events/RetailCardAssignedV1';
|
|
19
|
-
export * from './events/RetailCardReleasedV1';
|
|
20
|
-
export * from './events/RetailCardCancelledV1';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppOnboardingStepEnum } from '../enums/AppOnboardingStepEnum';
|
|
2
|
+
import { AppOnboardingStepStatusEnum } from '../enums/AppOnboardingStepStatusEnum';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Una condición del onboarding en la app con su estado. SureKeep Fase 2 — pista Retail.
|
|
6
|
+
*/
|
|
7
|
+
export interface AppOnboardingStep {
|
|
8
|
+
step: AppOnboardingStepEnum;
|
|
9
|
+
status: AppOnboardingStepStatusEnum;
|
|
10
|
+
/** Por qué no se pudo verificar. Solo viaja con `UNVERIFIABLE`. */
|
|
11
|
+
reason?: string;
|
|
12
|
+
}
|
|
@@ -43,7 +43,8 @@ export interface Sale {
|
|
|
43
43
|
folio: string;
|
|
44
44
|
paymentDetail: SalePaymentDetail | null;
|
|
45
45
|
soldAt: string;
|
|
46
|
-
|
|
46
|
+
/** Puntero a la entrega de la tarjeta física en `retail-cards-business`. */
|
|
47
|
+
cardDeliveryId: string | null;
|
|
47
48
|
centralSyncStatus: CentralSyncStatusEnum;
|
|
48
49
|
centralTag: string | null;
|
|
49
50
|
status: SaleStatusEnum;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsString } from 'class-validator';
|
|
2
|
+
import { IsOptional, IsString } from 'class-validator';
|
|
3
3
|
|
|
4
4
|
/** DELETE /wizard/sessions/:id/product — libera la reserva del equipo (vuelve al catálogo). SureKeep Fase 2 — pista Retail. */
|
|
5
5
|
export class DeleteProductRequest {
|
|
6
|
+
/** Opcional a propósito: exigirlo rompe a los callers que liberan la reserva sin mandar el imei. */
|
|
6
7
|
@Expose()
|
|
8
|
+
@IsOptional()
|
|
7
9
|
@IsString()
|
|
8
|
-
imei
|
|
10
|
+
imei?: string;
|
|
9
11
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { WizardStateEnum } from '../../enums/WizardStateEnum';
|
|
2
|
+
import type { WizardStepEnum } from '../../enums/WizardStepEnum';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* GET /wizard/sessions?phone=... — la venta en curso de un telefono, para la pestana «Wizard» de la
|
|
6
|
+
* pantalla Prospectos. El prospecto no guarda la sesion, asi que el telefono es la unica llave.
|
|
7
|
+
*
|
|
8
|
+
* `found: false` es la respuesta NORMAL: la mayoria de los prospectos no tienen venta empezada, y una
|
|
9
|
+
* sesion activa de OTRA tienda devuelve lo mismo (DEC-018 la trata como inexistente para el vendedor).
|
|
10
|
+
*
|
|
11
|
+
* SureKeep Fase 2 — pista Retail.
|
|
12
|
+
*/
|
|
13
|
+
export interface ActiveSessionByPhoneResponse {
|
|
14
|
+
/** Unico campo con el que el front decide si pinta el paso o un guion. */
|
|
15
|
+
found: boolean;
|
|
16
|
+
/** `null` cuando `found` es `false`. */
|
|
17
|
+
sessionId: string | null;
|
|
18
|
+
/** Paso en el que se quedo la venta. `null` cuando `found` es `false`. */
|
|
19
|
+
currentStep: WizardStepEnum | null;
|
|
20
|
+
/** Hoy siempre `ACTIVE`: la busqueda filtra por ese estado. `null` cuando `found` es `false`. */
|
|
21
|
+
state: WizardStateEnum | null;
|
|
22
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppOnboardingStep } from '../AppOnboardingStep';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GET /wizard/sessions/:id/app-onboarding — las condiciones del onboarding que el cliente hace en
|
|
5
|
+
* la app Fiado.
|
|
6
|
+
*
|
|
7
|
+
* Lo pollea el paso 09 del wizard, que dejó de pedirle al vendedor que teclee el número de tarjeta.
|
|
8
|
+
* SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export interface AppOnboardingResponse {
|
|
11
|
+
/** Las cuatro condiciones, siempre las cuatro, en orden fijo. */
|
|
12
|
+
steps: AppOnboardingStep[];
|
|
13
|
+
/** Ninguna quedó en `PENDING`. Una `UNVERIFIABLE` NO bloquea: cuenta como saldada. */
|
|
14
|
+
allSettled: boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condiciones del onboarding que el cliente hace en la app Fiado, y que el paso 09 del wizard
|
|
3
|
+
* pollea en vez de pedirle al vendedor que las teclee. SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*/
|
|
5
|
+
export enum AppOnboardingStepEnum {
|
|
6
|
+
/** Ya puso su contraseña sobre la cuenta que abrió la tienda. */
|
|
7
|
+
PASSWORD = 'PASSWORD',
|
|
8
|
+
/** Ya firmó el contrato MX. */
|
|
9
|
+
CONTRACT_SIGNED = 'CONTRACT_SIGNED',
|
|
10
|
+
/** Ya activó su número secreto de la app (2FA/transacciones, NO el NIP de la tarjeta). */
|
|
11
|
+
SECRET_NUMBER = 'SECRET_NUMBER',
|
|
12
|
+
/** Ya tiene una tarjeta física vigente. */
|
|
13
|
+
PHYSICAL_CARD = 'PHYSICAL_CARD',
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado de una condición del onboarding en la app. SureKeep Fase 2 — pista Retail.
|
|
3
|
+
*
|
|
4
|
+
* `UNVERIFIABLE` existe para no aplastar «no cumplió» contra «no pudimos saber»: un booleano le
|
|
5
|
+
* mostraría al vendedor la palomita apagada de un cliente que sí lo hizo, cuando lo que se cayó es
|
|
6
|
+
* un lambda nuestro. NO bloquea: cuenta como saldada.
|
|
7
|
+
*/
|
|
8
|
+
export enum AppOnboardingStepStatusEnum {
|
|
9
|
+
COMPLETED = 'COMPLETED',
|
|
10
|
+
PENDING = 'PENDING',
|
|
11
|
+
UNVERIFIABLE = 'UNVERIFIABLE',
|
|
12
|
+
}
|
|
@@ -20,6 +20,8 @@ export * from './enums/AccountVerdictEnum';
|
|
|
20
20
|
export * from './enums/AccountOutcomeEnum';
|
|
21
21
|
export * from './enums/AccountStepStatusEnum';
|
|
22
22
|
export * from './enums/ResumeReasonEnum';
|
|
23
|
+
export * from './enums/AppOnboardingStepEnum';
|
|
24
|
+
export * from './enums/AppOnboardingStepStatusEnum';
|
|
23
25
|
|
|
24
26
|
// DTOs anidados
|
|
25
27
|
export * from './dtos/WizardConsents';
|
|
@@ -32,6 +34,7 @@ export * from './dtos/WizardBeneficiary';
|
|
|
32
34
|
export * from './dtos/WizardLoan';
|
|
33
35
|
export * from './dtos/WizardCreditSummary';
|
|
34
36
|
export * from './dtos/AccountStep';
|
|
37
|
+
export * from './dtos/AppOnboardingStep';
|
|
35
38
|
export * from './dtos/WizardResumeTarget';
|
|
36
39
|
|
|
37
40
|
// Entidades principales (shapes de estado/persistencia — planas)
|
|
@@ -60,9 +63,7 @@ export * from './dtos/requests/DeleteProductRequest';
|
|
|
60
63
|
export * from './dtos/requests/SetPaymentMethodRequest';
|
|
61
64
|
export * from './dtos/requests/ExternalReferralRequest';
|
|
62
65
|
export * from './dtos/requests/RegisterPaymentRequest';
|
|
63
|
-
export * from './dtos/requests/CompleteSaleRequest';
|
|
64
66
|
export * from './dtos/requests/AppInstallLinkRequest';
|
|
65
|
-
export * from './dtos/requests/MarkPcfCardDeliveredRequest';
|
|
66
67
|
export * from './dtos/requests/ConfirmAddressRequest';
|
|
67
68
|
export * from './dtos/requests/ProfileQuestionsRequest';
|
|
68
69
|
export * from './dtos/requests/SaveBeneficiaryRequest';
|
|
@@ -90,6 +91,8 @@ export * from './dtos/responses/SignatureSendOtpResponse';
|
|
|
90
91
|
export * from './dtos/responses/SignatureSignResponse';
|
|
91
92
|
export * from './dtos/responses/RegisterDeviceResponse';
|
|
92
93
|
export * from './dtos/responses/AccountStatusResponse';
|
|
94
|
+
export * from './dtos/responses/ActiveSessionByPhoneResponse';
|
|
95
|
+
export * from './dtos/responses/AppOnboardingResponse';
|
|
93
96
|
|
|
94
97
|
// ── F3 · Backoffice VentasLuga ────────────────────────────────────────────────
|
|
95
98
|
// Enums
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.CancelCardRequest = void 0;
|
|
13
|
-
const class_validator_1 = require("class-validator");
|
|
14
|
-
const CardCancelReasonEnum_1 = require("../../enums/CardCancelReasonEnum");
|
|
15
|
-
/** Body de la cancelación (anulación) de una tarjeta física. */
|
|
16
|
-
class CancelCardRequest {
|
|
17
|
-
}
|
|
18
|
-
exports.CancelCardRequest = CancelCardRequest;
|
|
19
|
-
__decorate([
|
|
20
|
-
(0, class_validator_1.IsEnum)(CardCancelReasonEnum_1.CardCancelReasonEnum),
|
|
21
|
-
__metadata("design:type", String)
|
|
22
|
-
], CancelCardRequest.prototype, "reason", void 0);
|