@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
|
@@ -48,6 +48,8 @@ export interface CommissionPayoutSeller {
|
|
|
48
48
|
/** Al cerrar: si alcanzó su cuota. */
|
|
49
49
|
quotaMet: boolean | null;
|
|
50
50
|
quotaFactorBps: number | null;
|
|
51
|
+
/** El corte del vendedor calculado con reglas. Lo escribe el cierre. */
|
|
52
|
+
breakdown?: CommissionSellerBreakdown;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Un ajuste manual sobre el corte.
|
|
@@ -71,3 +73,85 @@ export interface CommissionAdjustment {
|
|
|
71
73
|
author: string;
|
|
72
74
|
createdAt: string;
|
|
73
75
|
}
|
|
76
|
+
/** Lo que una regla de bono por venta aportó al corte del vendedor. */
|
|
77
|
+
export interface CommissionRuleContribution {
|
|
78
|
+
ruleId: string;
|
|
79
|
+
name: string;
|
|
80
|
+
/** Piezas que pagaron esta regla. */
|
|
81
|
+
unitsCount: number;
|
|
82
|
+
bonusCents: number;
|
|
83
|
+
/** Su parte del multiplicador, en proporción a su bono. */
|
|
84
|
+
multiplierShareCents: number;
|
|
85
|
+
}
|
|
86
|
+
/** Un multiplicador que disparó en el corte. */
|
|
87
|
+
export interface CommissionAppliedMultiplier {
|
|
88
|
+
ruleId: string;
|
|
89
|
+
name: string;
|
|
90
|
+
factorBps: number;
|
|
91
|
+
}
|
|
92
|
+
/** Un bono por umbral que disparó en el corte. */
|
|
93
|
+
export interface CommissionAppliedThreshold {
|
|
94
|
+
ruleId: string;
|
|
95
|
+
name: string;
|
|
96
|
+
amountCents: number;
|
|
97
|
+
}
|
|
98
|
+
/** Lo vendido y lo pagado del vendedor en una tienda. Lo pagado no incluye umbrales. */
|
|
99
|
+
export interface CommissionStoreContribution {
|
|
100
|
+
storeId: string;
|
|
101
|
+
salesCount: number;
|
|
102
|
+
unitsCount: number;
|
|
103
|
+
placementCents: number;
|
|
104
|
+
paidCents: number;
|
|
105
|
+
}
|
|
106
|
+
/** Lo vendido y lo pagado del vendedor por un SKU. Lo pagado no incluye umbrales. */
|
|
107
|
+
export interface CommissionSkuContribution {
|
|
108
|
+
sku: string;
|
|
109
|
+
unitsCount: number;
|
|
110
|
+
placementCents: number;
|
|
111
|
+
paidCents: number;
|
|
112
|
+
}
|
|
113
|
+
/** La renta de cartera que pagó una regla en el corte. */
|
|
114
|
+
export interface CommissionAppliedRent {
|
|
115
|
+
ruleId: string;
|
|
116
|
+
name: string;
|
|
117
|
+
/** Cuotas cobradas que pagaron esta regla. */
|
|
118
|
+
couponsCount: number;
|
|
119
|
+
amountCents: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* El corte de un vendedor calculado con las reglas.
|
|
123
|
+
*
|
|
124
|
+
* liberado = round(subtotal × multiplicador) + umbral + renta · neto = liberado + ajustes.
|
|
125
|
+
*/
|
|
126
|
+
export interface CommissionSellerBreakdown {
|
|
127
|
+
sellerId: string;
|
|
128
|
+
/** Ventas del periodo sin las revertidas. */
|
|
129
|
+
salesCount: number;
|
|
130
|
+
/** Piezas de esas ventas: lo que cuentan las reglas. */
|
|
131
|
+
unitsCount: number;
|
|
132
|
+
/** Suma del precio neto de las piezas. */
|
|
133
|
+
placementCents: number;
|
|
134
|
+
subtotalBonusCents: number;
|
|
135
|
+
/** Multiplicador aplicado, ya con el tope. 10000 = ×1. */
|
|
136
|
+
multiplierBps: number;
|
|
137
|
+
multiplierBeforeCapBps: number;
|
|
138
|
+
multipliers: CommissionAppliedMultiplier[];
|
|
139
|
+
thresholdBonusCents: number;
|
|
140
|
+
thresholds: CommissionAppliedThreshold[];
|
|
141
|
+
portfolioRentCents: number;
|
|
142
|
+
releasedCents: number;
|
|
143
|
+
/** Ajustes del vendedor en el periodo: manuales, ventas tardías y reversas. */
|
|
144
|
+
adjustmentsCents: number;
|
|
145
|
+
/** Reversas de ventas de cortes ya cerrados, en positivo. Ya están dentro de `adjustmentsCents`. */
|
|
146
|
+
clawbackCents: number;
|
|
147
|
+
netCents: number;
|
|
148
|
+
byRule: CommissionRuleContribution[];
|
|
149
|
+
byStore: CommissionStoreContribution[];
|
|
150
|
+
bySku: CommissionSkuContribution[];
|
|
151
|
+
/** La renta por regla; suma `portfolioRentCents`. Ausente en cortes de antes de la renta. */
|
|
152
|
+
rentByRule?: CommissionAppliedRent[];
|
|
153
|
+
/** NPI M30 del vendedor con que se evaluaron las condiciones, en bps. `null` sin créditos que contar. */
|
|
154
|
+
npiM30Bps?: number | null;
|
|
155
|
+
/** Créditos que contaron para el NPI. */
|
|
156
|
+
npiSample?: number;
|
|
157
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { ProductCategoryEnum } from '../../retailCatalog/enums/ProductCategoryEnum';
|
|
2
|
+
import type { ProductTierEnum } from '../../retailCatalog/enums/ProductTierEnum';
|
|
3
|
+
import type { CommissionBonusModeEnum } from '../enums/CommissionBonusModeEnum';
|
|
4
|
+
import type { CommissionMetricEnum } from '../enums/CommissionMetricEnum';
|
|
5
|
+
import type { CommissionOperatorEnum } from '../enums/CommissionOperatorEnum';
|
|
6
|
+
import type { CommissionRuleStatusEnum } from '../enums/CommissionRuleStatusEnum';
|
|
7
|
+
import type { CommissionWindowEnum } from '../enums/CommissionWindowEnum';
|
|
8
|
+
/**
|
|
9
|
+
* Reglas de comisión de VentasLuga: cada regla es independiente y se apila con las demás.
|
|
10
|
+
*
|
|
11
|
+
* Montos en centavos (`*Cents`); porcentajes y factores en puntos base (`*Bps`, 10000 = 100% = ×1).
|
|
12
|
+
*/
|
|
13
|
+
/** Bono por pieza vendida: monto fijo (`FIXED`, centavos) o porcentaje de su precio neto (`PERCENT`, bps). */
|
|
14
|
+
export interface CommissionBonusPerSale {
|
|
15
|
+
mode: CommissionBonusModeEnum;
|
|
16
|
+
value: number;
|
|
17
|
+
}
|
|
18
|
+
/** Monto fijo, una vez por corte, cuando se cumple la condición. */
|
|
19
|
+
export interface CommissionThresholdBonus {
|
|
20
|
+
amountCents: number;
|
|
21
|
+
}
|
|
22
|
+
/** Multiplica el subtotal de bonos por venta del corte. */
|
|
23
|
+
export interface CommissionMultiplier {
|
|
24
|
+
factorBps: number;
|
|
25
|
+
}
|
|
26
|
+
/** Renta de cartera: un bono por cada cupón que el cliente paga. */
|
|
27
|
+
export interface CommissionCouponBonus {
|
|
28
|
+
mode: CommissionBonusModeEnum;
|
|
29
|
+
value: number;
|
|
30
|
+
}
|
|
31
|
+
/** Las palancas de una regla. Una regla publicable trae al menos una. */
|
|
32
|
+
export interface CommissionRuleLevers {
|
|
33
|
+
bonoPorVenta: CommissionBonusPerSale | null;
|
|
34
|
+
bonoUmbral: CommissionThresholdBonus | null;
|
|
35
|
+
multiplicador: CommissionMultiplier | null;
|
|
36
|
+
bonoPorCuponPagado: CommissionCouponBonus | null;
|
|
37
|
+
}
|
|
38
|
+
/** A qué piezas aplica la regla. Una lista vacía es "todas". */
|
|
39
|
+
export interface CommissionRuleScope {
|
|
40
|
+
tipos: ProductCategoryEnum[];
|
|
41
|
+
gamas: ProductTierEnum[];
|
|
42
|
+
skus: string[];
|
|
43
|
+
tiendas: string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Condición para que la regla dispare.
|
|
47
|
+
*
|
|
48
|
+
* `value` es un número, `[min, max]` con `BETWEEN` o la lista con `IN`. `minSample` solo aplica a
|
|
49
|
+
* `NPI_M30_VENDEDOR`: sin esa muestra la condición no dispara.
|
|
50
|
+
*/
|
|
51
|
+
export interface CommissionRuleCondition {
|
|
52
|
+
metric: CommissionMetricEnum;
|
|
53
|
+
operator: CommissionOperatorEnum;
|
|
54
|
+
value: number | number[];
|
|
55
|
+
minSample: number | null;
|
|
56
|
+
}
|
|
57
|
+
/** Una regla de comisión, en su última versión. */
|
|
58
|
+
export interface CommissionRule {
|
|
59
|
+
ruleId: string;
|
|
60
|
+
retailerId: string;
|
|
61
|
+
name: string;
|
|
62
|
+
description: string | null;
|
|
63
|
+
status: CommissionRuleStatusEnum;
|
|
64
|
+
levers: CommissionRuleLevers;
|
|
65
|
+
scope: CommissionRuleScope;
|
|
66
|
+
condition: CommissionRuleCondition | null;
|
|
67
|
+
/** `YYYY-MM-DD`, inclusive. */
|
|
68
|
+
effectiveFrom: string;
|
|
69
|
+
/** `YYYY-MM-DD`, inclusive. `null` = permanente. */
|
|
70
|
+
effectiveTo: string | null;
|
|
71
|
+
/** Desempata multiplicadores exclusivos: gana la mayor. */
|
|
72
|
+
priority: number;
|
|
73
|
+
/** Solo con multiplicador: si dispara, es el único multiplicador del corte. */
|
|
74
|
+
replacesOthers: boolean;
|
|
75
|
+
/** Sube en cada guardado. */
|
|
76
|
+
version: number;
|
|
77
|
+
/** La versión que está en el plan vigente. `null` si nunca se publicó. */
|
|
78
|
+
publishedVersion: number | null;
|
|
79
|
+
publishedBy: string | null;
|
|
80
|
+
publishedAt: string | null;
|
|
81
|
+
createdBy: string;
|
|
82
|
+
updatedBy: string;
|
|
83
|
+
createdAt: string;
|
|
84
|
+
updatedAt: string;
|
|
85
|
+
}
|
|
86
|
+
/** Ventanas del clawback, en días. */
|
|
87
|
+
export interface CommissionPolicyClawback {
|
|
88
|
+
cancelacionDias: number;
|
|
89
|
+
devolucionDias: number;
|
|
90
|
+
npiM30Dias: number;
|
|
91
|
+
editedBy: string;
|
|
92
|
+
editedAt: string;
|
|
93
|
+
}
|
|
94
|
+
/** Política de comisiones de la cadena. */
|
|
95
|
+
export interface CommissionPolicyCommissions {
|
|
96
|
+
/** Tope del multiplicador acumulado del corte. 25000 = ×2.5. */
|
|
97
|
+
multiplicadorMaxBps: number;
|
|
98
|
+
ventanaDefault: CommissionWindowEnum;
|
|
99
|
+
editedBy: string;
|
|
100
|
+
editedAt: string;
|
|
101
|
+
}
|
|
102
|
+
/** Políticas de la cadena. Cada una es `null` mientras la cadena no la guarda. */
|
|
103
|
+
export interface CommissionPolicies {
|
|
104
|
+
clawback: CommissionPolicyClawback | null;
|
|
105
|
+
commissions: CommissionPolicyCommissions | null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* El plan vigente: las reglas publicadas y las políticas, congeladas en un snapshot inmutable.
|
|
109
|
+
* Cada devengo apunta al snapshot con que se calculó.
|
|
110
|
+
*/
|
|
111
|
+
export interface CommissionRuleSetSnapshot {
|
|
112
|
+
retailerId: string;
|
|
113
|
+
snapshotId: string;
|
|
114
|
+
rules: CommissionRule[];
|
|
115
|
+
policies: CommissionPolicies;
|
|
116
|
+
changeNote: string;
|
|
117
|
+
publishedBy: string;
|
|
118
|
+
publishedAt: string;
|
|
119
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Por qué se agrega lo pagado en los cortes cerrados.
|
|
3
|
+
*
|
|
4
|
+
* RULE - Por regla: bonos por venta con su parte del multiplicador, y umbrales.
|
|
5
|
+
* STORE - Por tienda donde se vendió.
|
|
6
|
+
* SKU - Por producto.
|
|
7
|
+
* SELLER - Por vendedor: su neto.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum CommissionAggregateByEnum {
|
|
10
|
+
RULE = "RULE",
|
|
11
|
+
STORE = "STORE",
|
|
12
|
+
SKU = "SKU",
|
|
13
|
+
SELLER = "SELLER"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionAggregateByEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Por qué se agrega lo pagado en los cortes cerrados.
|
|
6
|
+
*
|
|
7
|
+
* RULE - Por regla: bonos por venta con su parte del multiplicador, y umbrales.
|
|
8
|
+
* STORE - Por tienda donde se vendió.
|
|
9
|
+
* SKU - Por producto.
|
|
10
|
+
* SELLER - Por vendedor: su neto.
|
|
11
|
+
*/
|
|
12
|
+
var CommissionAggregateByEnum;
|
|
13
|
+
(function (CommissionAggregateByEnum) {
|
|
14
|
+
CommissionAggregateByEnum["RULE"] = "RULE";
|
|
15
|
+
CommissionAggregateByEnum["STORE"] = "STORE";
|
|
16
|
+
CommissionAggregateByEnum["SKU"] = "SKU";
|
|
17
|
+
CommissionAggregateByEnum["SELLER"] = "SELLER";
|
|
18
|
+
})(CommissionAggregateByEnum || (exports.CommissionAggregateByEnum = CommissionAggregateByEnum = {}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionBonusModeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Cómo se calcula un bono.
|
|
6
|
+
*
|
|
7
|
+
* FIXED - Monto fijo en centavos por pieza.
|
|
8
|
+
* PERCENT - Puntos base sobre el precio neto de la pieza (10000 = 100%).
|
|
9
|
+
*/
|
|
10
|
+
var CommissionBonusModeEnum;
|
|
11
|
+
(function (CommissionBonusModeEnum) {
|
|
12
|
+
CommissionBonusModeEnum["FIXED"] = "FIXED";
|
|
13
|
+
CommissionBonusModeEnum["PERCENT"] = "PERCENT";
|
|
14
|
+
})(CommissionBonusModeEnum || (exports.CommissionBonusModeEnum = CommissionBonusModeEnum = {}));
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* QUOTA - Se resolvió la cuota (binaria o escalonada). Ocurre al CERRAR, no al devengar.
|
|
11
11
|
* ADJUSTMENT - Un ajuste manual del corte.
|
|
12
12
|
* NO_CATEGORY - El SKU no matcheó ninguna categoría del plan: devenga 0 y queda visible.
|
|
13
|
+
* BONUS_PER_SALE - Una regla con bono por venta sumó por una pieza de la venta.
|
|
13
14
|
*
|
|
14
15
|
* SureKeep Fase 3 — pista Retail. Motor de comisiones de VentasLuga.
|
|
15
16
|
*/
|
|
@@ -19,5 +20,6 @@ export declare enum CommissionCalcStepEnum {
|
|
|
19
20
|
ADDON = "ADDON",
|
|
20
21
|
QUOTA = "QUOTA",
|
|
21
22
|
ADJUSTMENT = "ADJUSTMENT",
|
|
22
|
-
NO_CATEGORY = "NO_CATEGORY"
|
|
23
|
+
NO_CATEGORY = "NO_CATEGORY",
|
|
24
|
+
BONUS_PER_SALE = "BONUS_PER_SALE"
|
|
23
25
|
}
|
|
@@ -13,6 +13,7 @@ exports.CommissionCalcStepEnum = void 0;
|
|
|
13
13
|
* QUOTA - Se resolvió la cuota (binaria o escalonada). Ocurre al CERRAR, no al devengar.
|
|
14
14
|
* ADJUSTMENT - Un ajuste manual del corte.
|
|
15
15
|
* NO_CATEGORY - El SKU no matcheó ninguna categoría del plan: devenga 0 y queda visible.
|
|
16
|
+
* BONUS_PER_SALE - Una regla con bono por venta sumó por una pieza de la venta.
|
|
16
17
|
*
|
|
17
18
|
* SureKeep Fase 3 — pista Retail. Motor de comisiones de VentasLuga.
|
|
18
19
|
*/
|
|
@@ -24,4 +25,5 @@ var CommissionCalcStepEnum;
|
|
|
24
25
|
CommissionCalcStepEnum["QUOTA"] = "QUOTA";
|
|
25
26
|
CommissionCalcStepEnum["ADJUSTMENT"] = "ADJUSTMENT";
|
|
26
27
|
CommissionCalcStepEnum["NO_CATEGORY"] = "NO_CATEGORY";
|
|
28
|
+
CommissionCalcStepEnum["BONUS_PER_SALE"] = "BONUS_PER_SALE";
|
|
27
29
|
})(CommissionCalcStepEnum || (exports.CommissionCalcStepEnum = CommissionCalcStepEnum = {}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Métricas de la condición de una regla.
|
|
3
|
+
*
|
|
4
|
+
* POSICION_VENTA_EN_PERIODO - Lugar de la pieza entre las del vendedor en el periodo que caen en el alcance de la regla.
|
|
5
|
+
* COLOCACION_PERIODO - Suma del precio neto de todo lo que el vendedor vendió en el periodo, en centavos.
|
|
6
|
+
* NPI_M30_VENDEDOR - Proporción de créditos del vendedor con primer impago a 30 días, en bps. Viene del crédito.
|
|
7
|
+
* SKUS_DISTINTOS_PERIODO - Cuántos SKUs distintos vendió el vendedor en el periodo.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum CommissionMetricEnum {
|
|
10
|
+
POSICION_VENTA_EN_PERIODO = "POSICION_VENTA_EN_PERIODO",
|
|
11
|
+
COLOCACION_PERIODO = "COLOCACION_PERIODO",
|
|
12
|
+
NPI_M30_VENDEDOR = "NPI_M30_VENDEDOR",
|
|
13
|
+
SKUS_DISTINTOS_PERIODO = "SKUS_DISTINTOS_PERIODO"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionMetricEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Métricas de la condición de una regla.
|
|
6
|
+
*
|
|
7
|
+
* POSICION_VENTA_EN_PERIODO - Lugar de la pieza entre las del vendedor en el periodo que caen en el alcance de la regla.
|
|
8
|
+
* COLOCACION_PERIODO - Suma del precio neto de todo lo que el vendedor vendió en el periodo, en centavos.
|
|
9
|
+
* NPI_M30_VENDEDOR - Proporción de créditos del vendedor con primer impago a 30 días, en bps. Viene del crédito.
|
|
10
|
+
* SKUS_DISTINTOS_PERIODO - Cuántos SKUs distintos vendió el vendedor en el periodo.
|
|
11
|
+
*/
|
|
12
|
+
var CommissionMetricEnum;
|
|
13
|
+
(function (CommissionMetricEnum) {
|
|
14
|
+
CommissionMetricEnum["POSICION_VENTA_EN_PERIODO"] = "POSICION_VENTA_EN_PERIODO";
|
|
15
|
+
CommissionMetricEnum["COLOCACION_PERIODO"] = "COLOCACION_PERIODO";
|
|
16
|
+
CommissionMetricEnum["NPI_M30_VENDEDOR"] = "NPI_M30_VENDEDOR";
|
|
17
|
+
CommissionMetricEnum["SKUS_DISTINTOS_PERIODO"] = "SKUS_DISTINTOS_PERIODO";
|
|
18
|
+
})(CommissionMetricEnum || (exports.CommissionMetricEnum = CommissionMetricEnum = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operadores de la condición de una regla.
|
|
3
|
+
*
|
|
4
|
+
* GTE, LTE, LT, GT - Contra un número.
|
|
5
|
+
* BETWEEN - Contra `[min, max]`, ambos inclusive.
|
|
6
|
+
* IN - Contra una lista de valores.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum CommissionOperatorEnum {
|
|
9
|
+
GTE = "GTE",
|
|
10
|
+
LTE = "LTE",
|
|
11
|
+
LT = "LT",
|
|
12
|
+
GT = "GT",
|
|
13
|
+
BETWEEN = "BETWEEN",
|
|
14
|
+
IN = "IN"
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionOperatorEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Operadores de la condición de una regla.
|
|
6
|
+
*
|
|
7
|
+
* GTE, LTE, LT, GT - Contra un número.
|
|
8
|
+
* BETWEEN - Contra `[min, max]`, ambos inclusive.
|
|
9
|
+
* IN - Contra una lista de valores.
|
|
10
|
+
*/
|
|
11
|
+
var CommissionOperatorEnum;
|
|
12
|
+
(function (CommissionOperatorEnum) {
|
|
13
|
+
CommissionOperatorEnum["GTE"] = "GTE";
|
|
14
|
+
CommissionOperatorEnum["LTE"] = "LTE";
|
|
15
|
+
CommissionOperatorEnum["LT"] = "LT";
|
|
16
|
+
CommissionOperatorEnum["GT"] = "GT";
|
|
17
|
+
CommissionOperatorEnum["BETWEEN"] = "BETWEEN";
|
|
18
|
+
CommissionOperatorEnum["IN"] = "IN";
|
|
19
|
+
})(CommissionOperatorEnum || (exports.CommissionOperatorEnum = CommissionOperatorEnum = {}));
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado de una regla de comisión.
|
|
3
|
+
*
|
|
4
|
+
* DRAFT - Borrador: nunca se publicó y no está en el plan vigente.
|
|
5
|
+
* SCHEDULED - Publicada, con vigencia que todavía no empieza.
|
|
6
|
+
* ACTIVE - Publicada y vigente.
|
|
7
|
+
* PAUSED - Publicada y pausada: sale del plan vigente hasta reanudarla.
|
|
8
|
+
* EXPIRED - Vencida por fecha o con "Vencer ahora". No vuelve a aplicar.
|
|
9
|
+
*/
|
|
10
|
+
export declare enum CommissionRuleStatusEnum {
|
|
11
|
+
DRAFT = "DRAFT",
|
|
12
|
+
SCHEDULED = "SCHEDULED",
|
|
13
|
+
ACTIVE = "ACTIVE",
|
|
14
|
+
PAUSED = "PAUSED",
|
|
15
|
+
EXPIRED = "EXPIRED"
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionRuleStatusEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Estado de una regla de comisión.
|
|
6
|
+
*
|
|
7
|
+
* DRAFT - Borrador: nunca se publicó y no está en el plan vigente.
|
|
8
|
+
* SCHEDULED - Publicada, con vigencia que todavía no empieza.
|
|
9
|
+
* ACTIVE - Publicada y vigente.
|
|
10
|
+
* PAUSED - Publicada y pausada: sale del plan vigente hasta reanudarla.
|
|
11
|
+
* EXPIRED - Vencida por fecha o con "Vencer ahora". No vuelve a aplicar.
|
|
12
|
+
*/
|
|
13
|
+
var CommissionRuleStatusEnum;
|
|
14
|
+
(function (CommissionRuleStatusEnum) {
|
|
15
|
+
CommissionRuleStatusEnum["DRAFT"] = "DRAFT";
|
|
16
|
+
CommissionRuleStatusEnum["SCHEDULED"] = "SCHEDULED";
|
|
17
|
+
CommissionRuleStatusEnum["ACTIVE"] = "ACTIVE";
|
|
18
|
+
CommissionRuleStatusEnum["PAUSED"] = "PAUSED";
|
|
19
|
+
CommissionRuleStatusEnum["EXPIRED"] = "EXPIRED";
|
|
20
|
+
})(CommissionRuleStatusEnum || (exports.CommissionRuleStatusEnum = CommissionRuleStatusEnum = {}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* De qué se arma una serie por periodo.
|
|
3
|
+
*
|
|
4
|
+
* SELLER - Un vendedor.
|
|
5
|
+
* RULE - Una regla.
|
|
6
|
+
* STORE - Una tienda.
|
|
7
|
+
* SKU - Un producto.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum CommissionSeriesByEnum {
|
|
10
|
+
SELLER = "SELLER",
|
|
11
|
+
RULE = "RULE",
|
|
12
|
+
STORE = "STORE",
|
|
13
|
+
SKU = "SKU"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionSeriesByEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* De qué se arma una serie por periodo.
|
|
6
|
+
*
|
|
7
|
+
* SELLER - Un vendedor.
|
|
8
|
+
* RULE - Una regla.
|
|
9
|
+
* STORE - Una tienda.
|
|
10
|
+
* SKU - Un producto.
|
|
11
|
+
*/
|
|
12
|
+
var CommissionSeriesByEnum;
|
|
13
|
+
(function (CommissionSeriesByEnum) {
|
|
14
|
+
CommissionSeriesByEnum["SELLER"] = "SELLER";
|
|
15
|
+
CommissionSeriesByEnum["RULE"] = "RULE";
|
|
16
|
+
CommissionSeriesByEnum["STORE"] = "STORE";
|
|
17
|
+
CommissionSeriesByEnum["SKU"] = "SKU";
|
|
18
|
+
})(CommissionSeriesByEnum || (exports.CommissionSeriesByEnum = CommissionSeriesByEnum = {}));
|
|
@@ -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 declare 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,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionSimulationSkipEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Por qué una regla no paga en la simulación.
|
|
6
|
+
*
|
|
7
|
+
* NOT_IN_EFFECT - Fuera de su vigencia en la fecha simulada.
|
|
8
|
+
* OUT_OF_SCOPE - El producto o la tienda no caen en su alcance.
|
|
9
|
+
* CONDITION_NOT_MET - Su condición no se cumple en esa posición.
|
|
10
|
+
* NO_DATA - Su condición usa un dato que todavía no existe (NPI M30).
|
|
11
|
+
*/
|
|
12
|
+
var CommissionSimulationSkipEnum;
|
|
13
|
+
(function (CommissionSimulationSkipEnum) {
|
|
14
|
+
CommissionSimulationSkipEnum["NOT_IN_EFFECT"] = "NOT_IN_EFFECT";
|
|
15
|
+
CommissionSimulationSkipEnum["OUT_OF_SCOPE"] = "OUT_OF_SCOPE";
|
|
16
|
+
CommissionSimulationSkipEnum["CONDITION_NOT_MET"] = "CONDITION_NOT_MET";
|
|
17
|
+
CommissionSimulationSkipEnum["NO_DATA"] = "NO_DATA";
|
|
18
|
+
})(CommissionSimulationSkipEnum || (exports.CommissionSimulationSkipEnum = CommissionSimulationSkipEnum = {}));
|
|
@@ -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 declare enum CommissionWindowEnum {
|
|
9
|
+
SEMANA_OPERATIVA = "SEMANA_OPERATIVA",
|
|
10
|
+
ROLLING_7D = "ROLLING_7D",
|
|
11
|
+
MES = "MES"
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommissionWindowEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ventana del corte de comisiones.
|
|
6
|
+
*
|
|
7
|
+
* SEMANA_OPERATIVA - Semana operativa de la cadena.
|
|
8
|
+
* ROLLING_7D - Últimos 7 días.
|
|
9
|
+
* MES - Mes calendario.
|
|
10
|
+
*/
|
|
11
|
+
var CommissionWindowEnum;
|
|
12
|
+
(function (CommissionWindowEnum) {
|
|
13
|
+
CommissionWindowEnum["SEMANA_OPERATIVA"] = "SEMANA_OPERATIVA";
|
|
14
|
+
CommissionWindowEnum["ROLLING_7D"] = "ROLLING_7D";
|
|
15
|
+
CommissionWindowEnum["MES"] = "MES";
|
|
16
|
+
})(CommissionWindowEnum || (exports.CommissionWindowEnum = CommissionWindowEnum = {}));
|
|
@@ -11,7 +11,17 @@ export * from './enums/CommissionPayoutStatusEnum';
|
|
|
11
11
|
export * from './enums/CommissionPayeeTypeEnum';
|
|
12
12
|
export * from './enums/CommissionExceptionTypeEnum';
|
|
13
13
|
export * from './enums/CommissionCalcStepEnum';
|
|
14
|
+
export * from './enums/CommissionRuleStatusEnum';
|
|
15
|
+
export * from './enums/CommissionBonusModeEnum';
|
|
16
|
+
export * from './enums/CommissionMetricEnum';
|
|
17
|
+
export * from './enums/CommissionOperatorEnum';
|
|
18
|
+
export * from './enums/CommissionWindowEnum';
|
|
19
|
+
export * from './enums/CommissionAggregateByEnum';
|
|
20
|
+
export * from './enums/CommissionSeriesByEnum';
|
|
21
|
+
export * from './enums/CommissionSimulationSkipEnum';
|
|
14
22
|
export * from './dtos/CommissionPlan';
|
|
23
|
+
export * from './dtos/CommissionRule';
|
|
24
|
+
export * from './dtos/CommissionCouponAccrual';
|
|
15
25
|
export * from './dtos/CommissionCalcTrace';
|
|
16
26
|
export * from './dtos/CommissionAccrual';
|
|
17
27
|
export * from './dtos/CommissionPayout';
|
|
@@ -28,8 +28,18 @@ __exportStar(require("./enums/CommissionPayoutStatusEnum"), exports);
|
|
|
28
28
|
__exportStar(require("./enums/CommissionPayeeTypeEnum"), exports);
|
|
29
29
|
__exportStar(require("./enums/CommissionExceptionTypeEnum"), exports);
|
|
30
30
|
__exportStar(require("./enums/CommissionCalcStepEnum"), exports);
|
|
31
|
+
__exportStar(require("./enums/CommissionRuleStatusEnum"), exports);
|
|
32
|
+
__exportStar(require("./enums/CommissionBonusModeEnum"), exports);
|
|
33
|
+
__exportStar(require("./enums/CommissionMetricEnum"), exports);
|
|
34
|
+
__exportStar(require("./enums/CommissionOperatorEnum"), exports);
|
|
35
|
+
__exportStar(require("./enums/CommissionWindowEnum"), exports);
|
|
36
|
+
__exportStar(require("./enums/CommissionAggregateByEnum"), exports);
|
|
37
|
+
__exportStar(require("./enums/CommissionSeriesByEnum"), exports);
|
|
38
|
+
__exportStar(require("./enums/CommissionSimulationSkipEnum"), exports);
|
|
31
39
|
// Entidades del dominio
|
|
32
40
|
__exportStar(require("./dtos/CommissionPlan"), exports);
|
|
41
|
+
__exportStar(require("./dtos/CommissionRule"), exports);
|
|
42
|
+
__exportStar(require("./dtos/CommissionCouponAccrual"), exports);
|
|
33
43
|
__exportStar(require("./dtos/CommissionCalcTrace"), exports);
|
|
34
44
|
__exportStar(require("./dtos/CommissionAccrual"), exports);
|
|
35
45
|
__exportStar(require("./dtos/CommissionPayout"), exports);
|
|
@@ -2,6 +2,8 @@ import { MyPaymentTypeEnum } from '../enums/MyPaymentTypeEnum';
|
|
|
2
2
|
/** Body de `POST /benefits/{benefitId}/credits/{creditId}/payments`. La llave va en el header `Idempotency-Key`. */
|
|
3
3
|
export declare class CreateMyPaymentRequest {
|
|
4
4
|
type: MyPaymentTypeEnum;
|
|
5
|
-
/** Monto en pesos que vio el cliente; si ya no coincide, responde PAYMENT_AMOUNT_CHANGED. */
|
|
5
|
+
/** Monto en pesos que vio el cliente (en PREPAYMENT, el que eligió); si ya no coincide, responde PAYMENT_AMOUNT_CHANGED. */
|
|
6
6
|
expectedAmount: number;
|
|
7
|
+
/** Solo ADVANCE: cuántas cuotas adelanta. */
|
|
8
|
+
installmentCount?: number;
|
|
7
9
|
}
|
|
@@ -28,3 +28,10 @@ __decorate([
|
|
|
28
28
|
(0, class_validator_1.IsPositive)(),
|
|
29
29
|
__metadata("design:type", Number)
|
|
30
30
|
], CreateMyPaymentRequest.prototype, "expectedAmount", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.IsInt)(),
|
|
35
|
+
(0, class_validator_1.Min)(2),
|
|
36
|
+
__metadata("design:type", Number)
|
|
37
|
+
], CreateMyPaymentRequest.prototype, "installmentCount", void 0);
|
|
@@ -7,12 +7,21 @@ export interface MyPaymentOption {
|
|
|
7
7
|
unavailableReason?: MyPaymentUnavailableReasonEnum;
|
|
8
8
|
amount?: number;
|
|
9
9
|
}
|
|
10
|
+
/** Una cuota que se puede adelantar. `amount` en pesos. */
|
|
11
|
+
export interface MyAdvanceInstallment {
|
|
12
|
+
installmentNumber: number;
|
|
13
|
+
/** `YYYY-MM-DD`. */
|
|
14
|
+
dueDate: string;
|
|
15
|
+
amount: number;
|
|
16
|
+
}
|
|
10
17
|
/** Opciones de pago de un crédito (`GET /benefits/{benefitId}/credits/{creditId}/payment-options`). Montos en pesos. */
|
|
11
18
|
export interface MyPaymentOptions {
|
|
12
19
|
/** Pago en curso; mientras exista, ninguna opción está disponible. */
|
|
13
20
|
pendingPayment?: {
|
|
14
21
|
type: MyPaymentTypeEnum;
|
|
15
22
|
amount: number;
|
|
23
|
+
/** Solo en varias cuotas: las cuotas que cubre. */
|
|
24
|
+
installmentNumbers?: number[];
|
|
16
25
|
};
|
|
17
26
|
nextInstallment: MyPaymentOption & {
|
|
18
27
|
mode?: MyNextInstallmentModeEnum;
|
|
@@ -20,7 +29,18 @@ export interface MyPaymentOptions {
|
|
|
20
29
|
/** `YYYY-MM-DD`. */
|
|
21
30
|
dueDate?: string;
|
|
22
31
|
};
|
|
23
|
-
|
|
32
|
+
/** Varias cuotas. `installments` trae las `maxInstallments` que se pueden adelantar, en orden. */
|
|
33
|
+
advance: MyPaymentOption & {
|
|
34
|
+
minInstallments?: number;
|
|
35
|
+
maxInstallments?: number;
|
|
36
|
+
installments?: MyAdvanceInstallment[];
|
|
37
|
+
};
|
|
38
|
+
/** Abono a capital: monto libre entre `minAmount` y `maxAmount`. */
|
|
39
|
+
prepayment: MyPaymentOption & {
|
|
40
|
+
minAmount?: number;
|
|
41
|
+
maxAmount?: number;
|
|
42
|
+
outstandingCapital?: number;
|
|
43
|
+
};
|
|
24
44
|
settlement: MyPaymentOption & {
|
|
25
45
|
breakdown?: {
|
|
26
46
|
overdue: 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 declare enum MyPaymentTypeEnum {
|
|
3
3
|
NEXT_INSTALLMENT = "NEXT_INSTALLMENT",
|
|
4
4
|
ADVANCE = "ADVANCE",
|
|
5
|
-
SETTLEMENT = "SETTLEMENT"
|
|
5
|
+
SETTLEMENT = "SETTLEMENT",
|
|
6
|
+
PREPAYMENT = "PREPAYMENT"
|
|
6
7
|
}
|