@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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.575.0",
3
+ "version": "3.576.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -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ó. */