@fiado/type-kit 3.575.0 → 3.576.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/retailCommission/commissionRules.test.ts +28 -0
- package/bin/retailCommission/dtos/CommissionApi.d.ts +12 -0
- package/bin/retailCommission/dtos/CommissionRule.d.ts +6 -0
- package/package.json +1 -1
- package/src/retailCommission/dtos/CommissionApi.ts +12 -0
- package/src/retailCommission/dtos/CommissionRule.ts +6 -0
|
@@ -113,6 +113,14 @@ describe('retailCommission — regla, políticas y snapshot', () => {
|
|
|
113
113
|
expect(monthly.payTiming).toBe('MONTHLY');
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
+
it('la regla puede traer adelanto al momento, o null, o nada', () => {
|
|
117
|
+
const withAdvance: RetailCommission.CommissionRule = { ...base, payTiming: RetailCommission.CommissionPayTimingEnum.MONTHLY, onSaleAdvanceBps: 3000 };
|
|
118
|
+
const none: RetailCommission.CommissionRule = { ...base, onSaleAdvanceBps: null };
|
|
119
|
+
expect(base.onSaleAdvanceBps).toBeUndefined();
|
|
120
|
+
expect(withAdvance.onSaleAdvanceBps).toBe(3000);
|
|
121
|
+
expect(none.onSaleAdvanceBps).toBeNull();
|
|
122
|
+
});
|
|
123
|
+
|
|
116
124
|
it('el snapshot congela las reglas publicadas y las políticas', () => {
|
|
117
125
|
const snapshot: RetailCommission.CommissionRuleSetSnapshot = {
|
|
118
126
|
retailerId: 'RET-1',
|
|
@@ -276,6 +284,26 @@ describe('retailCommission — contratos de reglas y políticas', () => {
|
|
|
276
284
|
expect(view.payTiming).toBe('ON_SALE');
|
|
277
285
|
});
|
|
278
286
|
|
|
287
|
+
it('el editor manda el adelanto y el vendedor lo ve', () => {
|
|
288
|
+
const create: RetailCommission.CreateRuleRequest = { ...input, payTiming: RetailCommission.CommissionPayTimingEnum.MONTHLY, onSaleAdvanceBps: 3000 };
|
|
289
|
+
const clear: RetailCommission.CreateRuleRequest = { ...input, onSaleAdvanceBps: null };
|
|
290
|
+
const view: RetailCommission.CommissionRuleView = {
|
|
291
|
+
ruleId: 'RC-01',
|
|
292
|
+
name: create.name,
|
|
293
|
+
description: create.description,
|
|
294
|
+
levers: create.levers,
|
|
295
|
+
scope: create.scope,
|
|
296
|
+
condition: create.condition,
|
|
297
|
+
effectiveFrom: create.effectiveFrom,
|
|
298
|
+
effectiveTo: create.effectiveTo,
|
|
299
|
+
payTiming: create.payTiming,
|
|
300
|
+
onSaleAdvanceBps: create.onSaleAdvanceBps,
|
|
301
|
+
};
|
|
302
|
+
expect(input.onSaleAdvanceBps).toBeUndefined();
|
|
303
|
+
expect(clear.onSaleAdvanceBps).toBeNull();
|
|
304
|
+
expect(view.onSaleAdvanceBps).toBe(3000);
|
|
305
|
+
});
|
|
306
|
+
|
|
279
307
|
it('las políticas se guardan juntas', () => {
|
|
280
308
|
const request: RetailCommission.UpdatePoliciesRequest = {
|
|
281
309
|
clawback: { cancelacionDias: 7, devolucionDias: 7, npiM30Dias: 30 },
|
|
@@ -202,6 +202,12 @@ export interface CommissionRuleInput {
|
|
|
202
202
|
countBy?: CommissionCountByEnum;
|
|
203
203
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
204
204
|
payTiming?: CommissionPayTimingEnum;
|
|
205
|
+
/**
|
|
206
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
207
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
208
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
209
|
+
*/
|
|
210
|
+
onSaleAdvanceBps?: number | null;
|
|
205
211
|
}
|
|
206
212
|
/** `POST /backoffice/commissions/rules` — la regla nace en borrador. */
|
|
207
213
|
export type CreateRuleRequest = CommissionRuleInput;
|
|
@@ -387,6 +393,12 @@ export interface CommissionRuleView {
|
|
|
387
393
|
countBy?: CommissionCountByEnum;
|
|
388
394
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
389
395
|
payTiming?: CommissionPayTimingEnum;
|
|
396
|
+
/**
|
|
397
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
398
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
399
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
400
|
+
*/
|
|
401
|
+
onSaleAdvanceBps?: number | null;
|
|
390
402
|
}
|
|
391
403
|
/** Lo pagado en varios cortes. */
|
|
392
404
|
export interface MyCommissionsTotals {
|
|
@@ -79,6 +79,12 @@ export interface CommissionRule {
|
|
|
79
79
|
countBy?: CommissionCountByEnum;
|
|
80
80
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
81
81
|
payTiming?: CommissionPayTimingEnum;
|
|
82
|
+
/**
|
|
83
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
84
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
85
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
86
|
+
*/
|
|
87
|
+
onSaleAdvanceBps?: number | null;
|
|
82
88
|
/** Sube en cada guardado. */
|
|
83
89
|
version: number;
|
|
84
90
|
/** La versión que está en el plan vigente. `null` si nunca se publicó. */
|
package/package.json
CHANGED
|
@@ -264,6 +264,12 @@ export interface CommissionRuleInput {
|
|
|
264
264
|
countBy?: CommissionCountByEnum;
|
|
265
265
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
266
266
|
payTiming?: CommissionPayTimingEnum;
|
|
267
|
+
/**
|
|
268
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
269
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
270
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
271
|
+
*/
|
|
272
|
+
onSaleAdvanceBps?: number | null;
|
|
267
273
|
}
|
|
268
274
|
|
|
269
275
|
/** `POST /backoffice/commissions/rules` — la regla nace en borrador. */
|
|
@@ -466,6 +472,12 @@ export interface CommissionRuleView {
|
|
|
466
472
|
countBy?: CommissionCountByEnum;
|
|
467
473
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
468
474
|
payTiming?: CommissionPayTimingEnum;
|
|
475
|
+
/**
|
|
476
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
477
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
478
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
479
|
+
*/
|
|
480
|
+
onSaleAdvanceBps?: number | null;
|
|
469
481
|
}
|
|
470
482
|
|
|
471
483
|
/** Lo pagado en varios cortes. */
|
|
@@ -88,6 +88,12 @@ export interface CommissionRule {
|
|
|
88
88
|
countBy?: CommissionCountByEnum;
|
|
89
89
|
/** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
|
|
90
90
|
payTiming?: CommissionPayTimingEnum;
|
|
91
|
+
/**
|
|
92
|
+
* Parte del bono por venta que se paga al registrar la venta, en puntos base (100–9900); el resto se
|
|
93
|
+
* paga en `payTiming`. Solo en reglas cuya única palanca es el bono por venta y con `payTiming`
|
|
94
|
+
* `ON_CUT` o `MONTHLY`. Ausente o `null` = sin adelanto.
|
|
95
|
+
*/
|
|
96
|
+
onSaleAdvanceBps?: number | null;
|
|
91
97
|
/** Sube en cada guardado. */
|
|
92
98
|
version: number;
|
|
93
99
|
/** La versión que está en el plan vigente. `null` si nunca se publicó. */
|