@fiado/type-kit 3.490.0 → 3.492.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/loanCredit/customerPaymentDtos.test.ts +2 -0
- package/_test_/unit/loanCredit/dtos/createCustomerPaymentRequest.test.ts +18 -4
- package/_test_/unit/loanCredit/installmentPaidEvent.test.ts +17 -0
- package/_test_/unit/retailCommission/commissionPayout.test.ts +104 -0
- package/_test_/unit/retailCommission/commissionRent.test.ts +33 -0
- package/_test_/unit/retailCommission/commissionRules.test.ts +249 -0
- package/_test_/unit/retailCommission/commissionSimulation.test.ts +43 -0
- package/_test_/unit/retailCommission/myCommissions.test.ts +29 -0
- package/_test_/unit/retailLoan/paymentContract.test.ts +3 -1
- package/_test_/unit/retailWizard/ventaSagaMessages.test.ts +108 -11
- package/bin/loanCredit/dtos/InstallmentPaidEvent.d.ts +18 -0
- package/bin/loanCredit/dtos/InstallmentPaidEvent.js +5 -0
- package/bin/loanCredit/dtos/requests/CreateCustomerPaymentRequest.d.ts +3 -1
- package/bin/loanCredit/dtos/requests/CreateCustomerPaymentRequest.js +7 -0
- package/bin/loanCredit/dtos/responses/LoanCustomerPaymentOptions.d.ts +21 -2
- package/bin/loanCredit/dtos/responses/LoanCustomerPaymentResult.d.ts +2 -0
- package/bin/loanCredit/enums/LoanCustomerPaymentTypeEnum.d.ts +5 -1
- package/bin/loanCredit/enums/LoanCustomerPaymentTypeEnum.js +4 -0
- package/bin/loanCredit/index.d.ts +1 -0
- package/bin/loanCredit/index.js +1 -0
- package/bin/retailCommission/dtos/CommissionAccrual.d.ts +36 -0
- package/bin/retailCommission/dtos/CommissionApi.d.ts +241 -2
- package/bin/retailCommission/dtos/CommissionCalcTrace.d.ts +10 -0
- package/bin/retailCommission/dtos/CommissionCouponAccrual.d.ts +31 -0
- package/bin/retailCommission/dtos/CommissionCouponAccrual.js +2 -0
- package/bin/retailCommission/dtos/CommissionPayout.d.ts +84 -0
- package/bin/retailCommission/dtos/CommissionRule.d.ts +119 -0
- package/bin/retailCommission/dtos/CommissionRule.js +2 -0
- package/bin/retailCommission/enums/CommissionAggregateByEnum.d.ts +14 -0
- package/bin/retailCommission/enums/CommissionAggregateByEnum.js +18 -0
- package/bin/retailCommission/enums/CommissionBonusModeEnum.d.ts +10 -0
- package/bin/retailCommission/enums/CommissionBonusModeEnum.js +14 -0
- package/bin/retailCommission/enums/CommissionCalcStepEnum.d.ts +3 -1
- package/bin/retailCommission/enums/CommissionCalcStepEnum.js +2 -0
- package/bin/retailCommission/enums/CommissionMetricEnum.d.ts +14 -0
- package/bin/retailCommission/enums/CommissionMetricEnum.js +18 -0
- package/bin/retailCommission/enums/CommissionOperatorEnum.d.ts +15 -0
- package/bin/retailCommission/enums/CommissionOperatorEnum.js +19 -0
- package/bin/retailCommission/enums/CommissionRuleStatusEnum.d.ts +16 -0
- package/bin/retailCommission/enums/CommissionRuleStatusEnum.js +20 -0
- package/bin/retailCommission/enums/CommissionSeriesByEnum.d.ts +14 -0
- package/bin/retailCommission/enums/CommissionSeriesByEnum.js +18 -0
- package/bin/retailCommission/enums/CommissionSimulationSkipEnum.d.ts +14 -0
- package/bin/retailCommission/enums/CommissionSimulationSkipEnum.js +18 -0
- package/bin/retailCommission/enums/CommissionWindowEnum.d.ts +12 -0
- package/bin/retailCommission/enums/CommissionWindowEnum.js +16 -0
- package/bin/retailCommission/index.d.ts +10 -0
- package/bin/retailCommission/index.js +10 -0
- package/bin/retailLoan/dtos/CreateMyPaymentRequest.d.ts +3 -1
- package/bin/retailLoan/dtos/CreateMyPaymentRequest.js +7 -0
- package/bin/retailLoan/dtos/CreateMyPaymentResponse.d.ts +2 -0
- package/bin/retailLoan/dtos/MyPaymentOptions.d.ts +21 -1
- package/bin/retailLoan/enums/MyPaymentTypeEnum.d.ts +3 -2
- package/bin/retailLoan/enums/MyPaymentTypeEnum.js +2 -1
- package/bin/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.d.ts +5 -0
- package/bin/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.js +9 -0
- package/bin/retailWizard/events/RetailCommissionInboundMessage.d.ts +27 -1
- package/bin/retailWizard/events/RetailCommissionInboundMessage.js +70 -1
- package/bin/retailWizard/index.d.ts +1 -0
- package/bin/retailWizard/index.js +1 -0
- package/package.json +1 -1
- package/src/loanCredit/dtos/InstallmentPaidEvent.ts +20 -0
- package/src/loanCredit/dtos/requests/CreateCustomerPaymentRequest.ts +9 -2
- package/src/loanCredit/dtos/responses/LoanCustomerPaymentOptions.ts +26 -3
- package/src/loanCredit/dtos/responses/LoanCustomerPaymentResult.ts +2 -0
- package/src/loanCredit/enums/LoanCustomerPaymentTypeEnum.ts +4 -0
- package/src/loanCredit/index.ts +1 -0
- package/src/retailCommission/dtos/CommissionAccrual.ts +38 -0
- package/src/retailCommission/dtos/CommissionApi.ts +276 -2
- package/src/retailCommission/dtos/CommissionCalcTrace.ts +7 -0
- package/src/retailCommission/dtos/CommissionCouponAccrual.ts +33 -0
- package/src/retailCommission/dtos/CommissionPayout.ts +91 -0
- package/src/retailCommission/dtos/CommissionRule.ts +132 -0
- package/src/retailCommission/enums/CommissionAggregateByEnum.ts +14 -0
- package/src/retailCommission/enums/CommissionBonusModeEnum.ts +10 -0
- package/src/retailCommission/enums/CommissionCalcStepEnum.ts +2 -0
- package/src/retailCommission/enums/CommissionMetricEnum.ts +14 -0
- package/src/retailCommission/enums/CommissionOperatorEnum.ts +15 -0
- package/src/retailCommission/enums/CommissionRuleStatusEnum.ts +16 -0
- package/src/retailCommission/enums/CommissionSeriesByEnum.ts +14 -0
- package/src/retailCommission/enums/CommissionSimulationSkipEnum.ts +14 -0
- package/src/retailCommission/enums/CommissionWindowEnum.ts +12 -0
- package/src/retailCommission/index.ts +10 -0
- package/src/retailLoan/dtos/CreateMyPaymentRequest.ts +9 -2
- package/src/retailLoan/dtos/CreateMyPaymentResponse.ts +2 -0
- package/src/retailLoan/dtos/MyPaymentOptions.ts +26 -2
- package/src/retailLoan/enums/MyPaymentTypeEnum.ts +2 -1
- package/src/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.ts +5 -0
- package/src/retailWizard/events/RetailCommissionInboundMessage.ts +75 -2
- package/src/retailWizard/index.ts +1 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Por qué una regla no paga en la simulación.
|
|
3
|
+
*
|
|
4
|
+
* NOT_IN_EFFECT - Fuera de su vigencia en la fecha simulada.
|
|
5
|
+
* OUT_OF_SCOPE - El producto o la tienda no caen en su alcance.
|
|
6
|
+
* CONDITION_NOT_MET - Su condición no se cumple en esa posición.
|
|
7
|
+
* NO_DATA - Su condición usa un dato que todavía no existe (NPI M30).
|
|
8
|
+
*/
|
|
9
|
+
export enum CommissionSimulationSkipEnum {
|
|
10
|
+
NOT_IN_EFFECT = 'NOT_IN_EFFECT',
|
|
11
|
+
OUT_OF_SCOPE = 'OUT_OF_SCOPE',
|
|
12
|
+
CONDITION_NOT_MET = 'CONDITION_NOT_MET',
|
|
13
|
+
NO_DATA = 'NO_DATA',
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ventana del corte de comisiones.
|
|
3
|
+
*
|
|
4
|
+
* SEMANA_OPERATIVA - Semana operativa de la cadena.
|
|
5
|
+
* ROLLING_7D - Últimos 7 días.
|
|
6
|
+
* MES - Mes calendario.
|
|
7
|
+
*/
|
|
8
|
+
export enum CommissionWindowEnum {
|
|
9
|
+
SEMANA_OPERATIVA = 'SEMANA_OPERATIVA',
|
|
10
|
+
ROLLING_7D = 'ROLLING_7D',
|
|
11
|
+
MES = 'MES',
|
|
12
|
+
}
|
|
@@ -12,9 +12,19 @@ export * from './enums/CommissionPayoutStatusEnum';
|
|
|
12
12
|
export * from './enums/CommissionPayeeTypeEnum';
|
|
13
13
|
export * from './enums/CommissionExceptionTypeEnum';
|
|
14
14
|
export * from './enums/CommissionCalcStepEnum';
|
|
15
|
+
export * from './enums/CommissionRuleStatusEnum';
|
|
16
|
+
export * from './enums/CommissionBonusModeEnum';
|
|
17
|
+
export * from './enums/CommissionMetricEnum';
|
|
18
|
+
export * from './enums/CommissionOperatorEnum';
|
|
19
|
+
export * from './enums/CommissionWindowEnum';
|
|
20
|
+
export * from './enums/CommissionAggregateByEnum';
|
|
21
|
+
export * from './enums/CommissionSeriesByEnum';
|
|
22
|
+
export * from './enums/CommissionSimulationSkipEnum';
|
|
15
23
|
|
|
16
24
|
// Entidades del dominio
|
|
17
25
|
export * from './dtos/CommissionPlan';
|
|
26
|
+
export * from './dtos/CommissionRule';
|
|
27
|
+
export * from './dtos/CommissionCouponAccrual';
|
|
18
28
|
export * from './dtos/CommissionCalcTrace';
|
|
19
29
|
export * from './dtos/CommissionAccrual';
|
|
20
30
|
export * from './dtos/CommissionPayout';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsEnum, IsNumber, IsPositive } from 'class-validator';
|
|
2
|
+
import { IsEnum, IsInt, IsNumber, IsOptional, IsPositive, Min } from 'class-validator';
|
|
3
3
|
import { MyPaymentTypeEnum } from '../enums/MyPaymentTypeEnum';
|
|
4
4
|
|
|
5
5
|
/** Body de `POST /benefits/{benefitId}/credits/{creditId}/payments`. La llave va en el header `Idempotency-Key`. */
|
|
@@ -8,9 +8,16 @@ export class CreateMyPaymentRequest {
|
|
|
8
8
|
@IsEnum(MyPaymentTypeEnum)
|
|
9
9
|
type!: MyPaymentTypeEnum;
|
|
10
10
|
|
|
11
|
-
/** Monto en pesos que vio el cliente; si ya no coincide, responde PAYMENT_AMOUNT_CHANGED. */
|
|
11
|
+
/** Monto en pesos que vio el cliente (en PREPAYMENT, el que eligió); si ya no coincide, responde PAYMENT_AMOUNT_CHANGED. */
|
|
12
12
|
@Expose()
|
|
13
13
|
@IsNumber({ maxDecimalPlaces: 2 })
|
|
14
14
|
@IsPositive()
|
|
15
15
|
expectedAmount!: number;
|
|
16
|
+
|
|
17
|
+
/** Solo ADVANCE: cuántas cuotas adelanta. */
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsInt()
|
|
21
|
+
@Min(2)
|
|
22
|
+
installmentCount?: number;
|
|
16
23
|
}
|
|
@@ -9,17 +9,41 @@ export interface MyPaymentOption {
|
|
|
9
9
|
amount?: number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/** Una cuota que se puede adelantar. `amount` en pesos. */
|
|
13
|
+
export interface MyAdvanceInstallment {
|
|
14
|
+
installmentNumber: number;
|
|
15
|
+
/** `YYYY-MM-DD`. */
|
|
16
|
+
dueDate: string;
|
|
17
|
+
amount: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
12
20
|
/** Opciones de pago de un crédito (`GET /benefits/{benefitId}/credits/{creditId}/payment-options`). Montos en pesos. */
|
|
13
21
|
export interface MyPaymentOptions {
|
|
14
22
|
/** Pago en curso; mientras exista, ninguna opción está disponible. */
|
|
15
|
-
pendingPayment?: {
|
|
23
|
+
pendingPayment?: {
|
|
24
|
+
type: MyPaymentTypeEnum;
|
|
25
|
+
amount: number;
|
|
26
|
+
/** Solo en varias cuotas: las cuotas que cubre. */
|
|
27
|
+
installmentNumbers?: number[];
|
|
28
|
+
};
|
|
16
29
|
nextInstallment: MyPaymentOption & {
|
|
17
30
|
mode?: MyNextInstallmentModeEnum;
|
|
18
31
|
installmentNumber?: number;
|
|
19
32
|
/** `YYYY-MM-DD`. */
|
|
20
33
|
dueDate?: string;
|
|
21
34
|
};
|
|
22
|
-
|
|
35
|
+
/** Varias cuotas. `installments` trae las `maxInstallments` que se pueden adelantar, en orden. */
|
|
36
|
+
advance: MyPaymentOption & {
|
|
37
|
+
minInstallments?: number;
|
|
38
|
+
maxInstallments?: number;
|
|
39
|
+
installments?: MyAdvanceInstallment[];
|
|
40
|
+
};
|
|
41
|
+
/** Abono a capital: monto libre entre `minAmount` y `maxAmount`. */
|
|
42
|
+
prepayment: MyPaymentOption & {
|
|
43
|
+
minAmount?: number;
|
|
44
|
+
maxAmount?: number;
|
|
45
|
+
outstandingCapital?: number;
|
|
46
|
+
};
|
|
23
47
|
settlement: MyPaymentOption & {
|
|
24
48
|
breakdown?: { overdue: number; capital: number; interest: number; iva: number };
|
|
25
49
|
savings?: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
/** Pago que el cliente pide desde la app. `ADVANCE` = varias cuotas. */
|
|
1
|
+
/** Pago que el cliente pide desde la app. `ADVANCE` = varias cuotas; `PREPAYMENT` = abono a capital. */
|
|
2
2
|
export enum MyPaymentTypeEnum {
|
|
3
3
|
NEXT_INSTALLMENT = 'NEXT_INSTALLMENT',
|
|
4
4
|
ADVANCE = 'ADVANCE',
|
|
5
5
|
SETTLEMENT = 'SETTLEMENT',
|
|
6
|
+
PREPAYMENT = 'PREPAYMENT',
|
|
6
7
|
}
|
|
@@ -1,9 +1,31 @@
|
|
|
1
1
|
import { Type } from 'class-transformer';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
ArrayMinSize,
|
|
4
|
+
IsArray,
|
|
5
|
+
IsEnum,
|
|
6
|
+
IsISO8601,
|
|
7
|
+
IsInt,
|
|
8
|
+
IsNotEmpty,
|
|
9
|
+
IsOptional,
|
|
10
|
+
IsString,
|
|
11
|
+
Min,
|
|
12
|
+
ValidateNested,
|
|
13
|
+
} from 'class-validator';
|
|
3
14
|
import { ItemTypeEnum } from '../../retailCatalog/enums/ItemTypeEnum';
|
|
15
|
+
import { ProductCategoryEnum } from '../../retailCatalog/enums/ProductCategoryEnum';
|
|
16
|
+
import { ProductTierEnum } from '../../retailCatalog/enums/ProductTierEnum';
|
|
17
|
+
import { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
|
|
18
|
+
import { LinePaymentTypeEnum } from '../enums/LinePaymentTypeEnum';
|
|
19
|
+
import { RetailCommissionInboundMessageTypeEnum } from '../enums/RetailCommissionInboundMessageTypeEnum';
|
|
20
|
+
import { SaleTypeEnum } from '../enums/SaleTypeEnum';
|
|
21
|
+
import { WizardLineRoleEnum } from '../enums/WizardLineRoleEnum';
|
|
4
22
|
|
|
5
23
|
/** Línea vendida en el mensaje de comisiones. */
|
|
6
24
|
export class RetailCommissionInboundLine {
|
|
25
|
+
@IsString()
|
|
26
|
+
@IsNotEmpty()
|
|
27
|
+
lineId!: string;
|
|
28
|
+
|
|
7
29
|
@IsString()
|
|
8
30
|
@IsNotEmpty()
|
|
9
31
|
sku!: string;
|
|
@@ -19,10 +41,34 @@ export class RetailCommissionInboundLine {
|
|
|
19
41
|
|
|
20
42
|
@IsEnum(ItemTypeEnum)
|
|
21
43
|
itemType!: ItemTypeEnum;
|
|
44
|
+
|
|
45
|
+
/** `null` si la línea no trae la ficha del producto. */
|
|
46
|
+
@IsOptional()
|
|
47
|
+
@IsEnum(ProductCategoryEnum)
|
|
48
|
+
category!: ProductCategoryEnum | null;
|
|
49
|
+
|
|
50
|
+
/** `null` = sin gama. */
|
|
51
|
+
@IsOptional()
|
|
52
|
+
@IsEnum(ProductTierEnum)
|
|
53
|
+
tier!: ProductTierEnum | null;
|
|
54
|
+
|
|
55
|
+
@IsOptional()
|
|
56
|
+
@IsString()
|
|
57
|
+
brand!: string | null;
|
|
58
|
+
|
|
59
|
+
@IsEnum(LinePaymentTypeEnum)
|
|
60
|
+
paymentType!: LinePaymentTypeEnum;
|
|
61
|
+
|
|
62
|
+
@IsOptional()
|
|
63
|
+
@IsEnum(WizardLineRoleEnum)
|
|
64
|
+
role?: WizardLineRoleEnum;
|
|
22
65
|
}
|
|
23
66
|
|
|
24
|
-
/** Venta
|
|
67
|
+
/** Venta cerrada o cancelada que el wizard publica en RetailCommissionInboundQueue. */
|
|
25
68
|
export class RetailCommissionInboundMessage {
|
|
69
|
+
@IsEnum(RetailCommissionInboundMessageTypeEnum)
|
|
70
|
+
type!: RetailCommissionInboundMessageTypeEnum;
|
|
71
|
+
|
|
26
72
|
@IsString()
|
|
27
73
|
@IsNotEmpty()
|
|
28
74
|
tenantId!: string;
|
|
@@ -43,9 +89,36 @@ export class RetailCommissionInboundMessage {
|
|
|
43
89
|
@IsNotEmpty()
|
|
44
90
|
sessionId!: string;
|
|
45
91
|
|
|
92
|
+
/** Quién vendió. */
|
|
93
|
+
@IsString()
|
|
94
|
+
@IsNotEmpty()
|
|
95
|
+
sellerRetailUserId!: string;
|
|
96
|
+
|
|
97
|
+
@IsEnum(SaleTypeEnum)
|
|
98
|
+
saleType!: SaleTypeEnum;
|
|
99
|
+
|
|
100
|
+
/** Solo en EXTERNAL_REFERRAL. */
|
|
101
|
+
@IsOptional()
|
|
102
|
+
@IsEnum(ExternalProviderEnum)
|
|
103
|
+
externalProvider!: ExternalProviderEnum | null;
|
|
104
|
+
|
|
105
|
+
@IsOptional()
|
|
106
|
+
@IsString()
|
|
107
|
+
@IsNotEmpty()
|
|
108
|
+
creditId!: string | null;
|
|
109
|
+
|
|
46
110
|
@IsISO8601()
|
|
47
111
|
soldAt!: string;
|
|
48
112
|
|
|
113
|
+
/** soldAt en la venta; cancelledAt en la cancelación. */
|
|
114
|
+
@IsISO8601()
|
|
115
|
+
occurredAt!: string;
|
|
116
|
+
|
|
117
|
+
/** Motivo de la cancelación; puede venir vacío. */
|
|
118
|
+
@IsOptional()
|
|
119
|
+
@IsString()
|
|
120
|
+
cancelReason?: string;
|
|
121
|
+
|
|
49
122
|
@IsArray()
|
|
50
123
|
@ArrayMinSize(1)
|
|
51
124
|
@ValidateNested({ each: true })
|
|
@@ -166,6 +166,7 @@ export * from './events/SaleCompletedV2';
|
|
|
166
166
|
export * from './events/SaleCancelledV2';
|
|
167
167
|
export * from './events/SessionExpiredV1';
|
|
168
168
|
export * from './enums/RetailPromotionInboundMessageTypeEnum';
|
|
169
|
+
export * from './enums/RetailCommissionInboundMessageTypeEnum';
|
|
169
170
|
export * from './events/RetailPromotionInboundMessage';
|
|
170
171
|
export * from './events/RetailCommissionInboundMessage';
|
|
171
172
|
|