@fiado/type-kit 3.491.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.
Files changed (67) hide show
  1. package/_test_/unit/loanCredit/installmentPaidEvent.test.ts +17 -0
  2. package/_test_/unit/retailCommission/commissionPayout.test.ts +104 -0
  3. package/_test_/unit/retailCommission/commissionRent.test.ts +33 -0
  4. package/_test_/unit/retailCommission/commissionRules.test.ts +249 -0
  5. package/_test_/unit/retailCommission/commissionSimulation.test.ts +43 -0
  6. package/_test_/unit/retailCommission/myCommissions.test.ts +29 -0
  7. package/_test_/unit/retailWizard/ventaSagaMessages.test.ts +108 -11
  8. package/bin/loanCredit/dtos/InstallmentPaidEvent.d.ts +18 -0
  9. package/bin/loanCredit/dtos/InstallmentPaidEvent.js +5 -0
  10. package/bin/loanCredit/index.d.ts +1 -0
  11. package/bin/loanCredit/index.js +1 -0
  12. package/bin/retailCommission/dtos/CommissionAccrual.d.ts +36 -0
  13. package/bin/retailCommission/dtos/CommissionApi.d.ts +241 -2
  14. package/bin/retailCommission/dtos/CommissionCalcTrace.d.ts +10 -0
  15. package/bin/retailCommission/dtos/CommissionCouponAccrual.d.ts +31 -0
  16. package/bin/retailCommission/dtos/CommissionCouponAccrual.js +2 -0
  17. package/bin/retailCommission/dtos/CommissionPayout.d.ts +84 -0
  18. package/bin/retailCommission/dtos/CommissionRule.d.ts +119 -0
  19. package/bin/retailCommission/dtos/CommissionRule.js +2 -0
  20. package/bin/retailCommission/enums/CommissionAggregateByEnum.d.ts +14 -0
  21. package/bin/retailCommission/enums/CommissionAggregateByEnum.js +18 -0
  22. package/bin/retailCommission/enums/CommissionBonusModeEnum.d.ts +10 -0
  23. package/bin/retailCommission/enums/CommissionBonusModeEnum.js +14 -0
  24. package/bin/retailCommission/enums/CommissionCalcStepEnum.d.ts +3 -1
  25. package/bin/retailCommission/enums/CommissionCalcStepEnum.js +2 -0
  26. package/bin/retailCommission/enums/CommissionMetricEnum.d.ts +14 -0
  27. package/bin/retailCommission/enums/CommissionMetricEnum.js +18 -0
  28. package/bin/retailCommission/enums/CommissionOperatorEnum.d.ts +15 -0
  29. package/bin/retailCommission/enums/CommissionOperatorEnum.js +19 -0
  30. package/bin/retailCommission/enums/CommissionRuleStatusEnum.d.ts +16 -0
  31. package/bin/retailCommission/enums/CommissionRuleStatusEnum.js +20 -0
  32. package/bin/retailCommission/enums/CommissionSeriesByEnum.d.ts +14 -0
  33. package/bin/retailCommission/enums/CommissionSeriesByEnum.js +18 -0
  34. package/bin/retailCommission/enums/CommissionSimulationSkipEnum.d.ts +14 -0
  35. package/bin/retailCommission/enums/CommissionSimulationSkipEnum.js +18 -0
  36. package/bin/retailCommission/enums/CommissionWindowEnum.d.ts +12 -0
  37. package/bin/retailCommission/enums/CommissionWindowEnum.js +16 -0
  38. package/bin/retailCommission/index.d.ts +10 -0
  39. package/bin/retailCommission/index.js +10 -0
  40. package/bin/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.d.ts +5 -0
  41. package/bin/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.js +9 -0
  42. package/bin/retailWizard/events/RetailCommissionInboundMessage.d.ts +27 -1
  43. package/bin/retailWizard/events/RetailCommissionInboundMessage.js +70 -1
  44. package/bin/retailWizard/index.d.ts +1 -0
  45. package/bin/retailWizard/index.js +1 -0
  46. package/package.json +1 -1
  47. package/src/loanCredit/dtos/InstallmentPaidEvent.ts +20 -0
  48. package/src/loanCredit/index.ts +1 -0
  49. package/src/retailCommission/dtos/CommissionAccrual.ts +38 -0
  50. package/src/retailCommission/dtos/CommissionApi.ts +276 -2
  51. package/src/retailCommission/dtos/CommissionCalcTrace.ts +7 -0
  52. package/src/retailCommission/dtos/CommissionCouponAccrual.ts +33 -0
  53. package/src/retailCommission/dtos/CommissionPayout.ts +91 -0
  54. package/src/retailCommission/dtos/CommissionRule.ts +132 -0
  55. package/src/retailCommission/enums/CommissionAggregateByEnum.ts +14 -0
  56. package/src/retailCommission/enums/CommissionBonusModeEnum.ts +10 -0
  57. package/src/retailCommission/enums/CommissionCalcStepEnum.ts +2 -0
  58. package/src/retailCommission/enums/CommissionMetricEnum.ts +14 -0
  59. package/src/retailCommission/enums/CommissionOperatorEnum.ts +15 -0
  60. package/src/retailCommission/enums/CommissionRuleStatusEnum.ts +16 -0
  61. package/src/retailCommission/enums/CommissionSeriesByEnum.ts +14 -0
  62. package/src/retailCommission/enums/CommissionSimulationSkipEnum.ts +14 -0
  63. package/src/retailCommission/enums/CommissionWindowEnum.ts +12 -0
  64. package/src/retailCommission/index.ts +10 -0
  65. package/src/retailWizard/enums/RetailCommissionInboundMessageTypeEnum.ts +5 -0
  66. package/src/retailWizard/events/RetailCommissionInboundMessage.ts +75 -2
  67. package/src/retailWizard/index.ts +1 -0
@@ -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);
@@ -0,0 +1,5 @@
1
+ /** Tipo de mensaje que el wizard publica en la cola de Comisiones. */
2
+ export declare enum RetailCommissionInboundMessageTypeEnum {
3
+ SALE_COMPLETED = "SALE_COMPLETED",
4
+ SALE_CANCELLED = "SALE_CANCELLED"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetailCommissionInboundMessageTypeEnum = void 0;
4
+ /** Tipo de mensaje que el wizard publica en la cola de Comisiones. */
5
+ var RetailCommissionInboundMessageTypeEnum;
6
+ (function (RetailCommissionInboundMessageTypeEnum) {
7
+ RetailCommissionInboundMessageTypeEnum["SALE_COMPLETED"] = "SALE_COMPLETED";
8
+ RetailCommissionInboundMessageTypeEnum["SALE_CANCELLED"] = "SALE_CANCELLED";
9
+ })(RetailCommissionInboundMessageTypeEnum || (exports.RetailCommissionInboundMessageTypeEnum = RetailCommissionInboundMessageTypeEnum = {}));
@@ -1,19 +1,45 @@
1
1
  import { ItemTypeEnum } from '../../retailCatalog/enums/ItemTypeEnum';
2
+ import { ProductCategoryEnum } from '../../retailCatalog/enums/ProductCategoryEnum';
3
+ import { ProductTierEnum } from '../../retailCatalog/enums/ProductTierEnum';
4
+ import { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
5
+ import { LinePaymentTypeEnum } from '../enums/LinePaymentTypeEnum';
6
+ import { RetailCommissionInboundMessageTypeEnum } from '../enums/RetailCommissionInboundMessageTypeEnum';
7
+ import { SaleTypeEnum } from '../enums/SaleTypeEnum';
8
+ import { WizardLineRoleEnum } from '../enums/WizardLineRoleEnum';
2
9
  /** Línea vendida en el mensaje de comisiones. */
3
10
  export declare class RetailCommissionInboundLine {
11
+ lineId: string;
4
12
  sku: string;
5
13
  qty: number;
6
14
  /** Precio neto de la línea (precio − descuento). */
7
15
  netCents: number;
8
16
  itemType: ItemTypeEnum;
17
+ /** `null` si la línea no trae la ficha del producto. */
18
+ category: ProductCategoryEnum | null;
19
+ /** `null` = sin gama. */
20
+ tier: ProductTierEnum | null;
21
+ brand: string | null;
22
+ paymentType: LinePaymentTypeEnum;
23
+ role?: WizardLineRoleEnum;
9
24
  }
10
- /** Venta de la saga que el wizard publica en la cola de comisiones, con sus líneas. */
25
+ /** Venta cerrada o cancelada que el wizard publica en RetailCommissionInboundQueue. */
11
26
  export declare class RetailCommissionInboundMessage {
27
+ type: RetailCommissionInboundMessageTypeEnum;
12
28
  tenantId: string;
13
29
  retailerId: string;
14
30
  storeId: string;
15
31
  saleId: string;
16
32
  sessionId: string;
33
+ /** Quién vendió. */
34
+ sellerRetailUserId: string;
35
+ saleType: SaleTypeEnum;
36
+ /** Solo en EXTERNAL_REFERRAL. */
37
+ externalProvider: ExternalProviderEnum | null;
38
+ creditId: string | null;
17
39
  soldAt: string;
40
+ /** soldAt en la venta; cancelledAt en la cancelación. */
41
+ occurredAt: string;
42
+ /** Motivo de la cancelación; puede venir vacío. */
43
+ cancelReason?: string;
18
44
  lines: RetailCommissionInboundLine[];
19
45
  }
@@ -13,10 +13,22 @@ exports.RetailCommissionInboundMessage = exports.RetailCommissionInboundLine = v
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const ItemTypeEnum_1 = require("../../retailCatalog/enums/ItemTypeEnum");
16
+ const ProductCategoryEnum_1 = require("../../retailCatalog/enums/ProductCategoryEnum");
17
+ const ProductTierEnum_1 = require("../../retailCatalog/enums/ProductTierEnum");
18
+ const ExternalProviderEnum_1 = require("../enums/ExternalProviderEnum");
19
+ const LinePaymentTypeEnum_1 = require("../enums/LinePaymentTypeEnum");
20
+ const RetailCommissionInboundMessageTypeEnum_1 = require("../enums/RetailCommissionInboundMessageTypeEnum");
21
+ const SaleTypeEnum_1 = require("../enums/SaleTypeEnum");
22
+ const WizardLineRoleEnum_1 = require("../enums/WizardLineRoleEnum");
16
23
  /** Línea vendida en el mensaje de comisiones. */
17
24
  class RetailCommissionInboundLine {
18
25
  }
19
26
  exports.RetailCommissionInboundLine = RetailCommissionInboundLine;
27
+ __decorate([
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.IsNotEmpty)(),
30
+ __metadata("design:type", String)
31
+ ], RetailCommissionInboundLine.prototype, "lineId", void 0);
20
32
  __decorate([
21
33
  (0, class_validator_1.IsString)(),
22
34
  (0, class_validator_1.IsNotEmpty)(),
@@ -36,10 +48,38 @@ __decorate([
36
48
  (0, class_validator_1.IsEnum)(ItemTypeEnum_1.ItemTypeEnum),
37
49
  __metadata("design:type", String)
38
50
  ], RetailCommissionInboundLine.prototype, "itemType", void 0);
39
- /** Venta de la saga que el wizard publica en la cola de comisiones, con sus líneas. */
51
+ __decorate([
52
+ (0, class_validator_1.IsOptional)(),
53
+ (0, class_validator_1.IsEnum)(ProductCategoryEnum_1.ProductCategoryEnum),
54
+ __metadata("design:type", String)
55
+ ], RetailCommissionInboundLine.prototype, "category", void 0);
56
+ __decorate([
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsEnum)(ProductTierEnum_1.ProductTierEnum),
59
+ __metadata("design:type", String)
60
+ ], RetailCommissionInboundLine.prototype, "tier", void 0);
61
+ __decorate([
62
+ (0, class_validator_1.IsOptional)(),
63
+ (0, class_validator_1.IsString)(),
64
+ __metadata("design:type", String)
65
+ ], RetailCommissionInboundLine.prototype, "brand", void 0);
66
+ __decorate([
67
+ (0, class_validator_1.IsEnum)(LinePaymentTypeEnum_1.LinePaymentTypeEnum),
68
+ __metadata("design:type", String)
69
+ ], RetailCommissionInboundLine.prototype, "paymentType", void 0);
70
+ __decorate([
71
+ (0, class_validator_1.IsOptional)(),
72
+ (0, class_validator_1.IsEnum)(WizardLineRoleEnum_1.WizardLineRoleEnum),
73
+ __metadata("design:type", String)
74
+ ], RetailCommissionInboundLine.prototype, "role", void 0);
75
+ /** Venta cerrada o cancelada que el wizard publica en RetailCommissionInboundQueue. */
40
76
  class RetailCommissionInboundMessage {
41
77
  }
42
78
  exports.RetailCommissionInboundMessage = RetailCommissionInboundMessage;
79
+ __decorate([
80
+ (0, class_validator_1.IsEnum)(RetailCommissionInboundMessageTypeEnum_1.RetailCommissionInboundMessageTypeEnum),
81
+ __metadata("design:type", String)
82
+ ], RetailCommissionInboundMessage.prototype, "type", void 0);
43
83
  __decorate([
44
84
  (0, class_validator_1.IsString)(),
45
85
  (0, class_validator_1.IsNotEmpty)(),
@@ -65,10 +105,39 @@ __decorate([
65
105
  (0, class_validator_1.IsNotEmpty)(),
66
106
  __metadata("design:type", String)
67
107
  ], RetailCommissionInboundMessage.prototype, "sessionId", void 0);
108
+ __decorate([
109
+ (0, class_validator_1.IsString)(),
110
+ (0, class_validator_1.IsNotEmpty)(),
111
+ __metadata("design:type", String)
112
+ ], RetailCommissionInboundMessage.prototype, "sellerRetailUserId", void 0);
113
+ __decorate([
114
+ (0, class_validator_1.IsEnum)(SaleTypeEnum_1.SaleTypeEnum),
115
+ __metadata("design:type", String)
116
+ ], RetailCommissionInboundMessage.prototype, "saleType", void 0);
117
+ __decorate([
118
+ (0, class_validator_1.IsOptional)(),
119
+ (0, class_validator_1.IsEnum)(ExternalProviderEnum_1.ExternalProviderEnum),
120
+ __metadata("design:type", String)
121
+ ], RetailCommissionInboundMessage.prototype, "externalProvider", void 0);
122
+ __decorate([
123
+ (0, class_validator_1.IsOptional)(),
124
+ (0, class_validator_1.IsString)(),
125
+ (0, class_validator_1.IsNotEmpty)(),
126
+ __metadata("design:type", String)
127
+ ], RetailCommissionInboundMessage.prototype, "creditId", void 0);
68
128
  __decorate([
69
129
  (0, class_validator_1.IsISO8601)(),
70
130
  __metadata("design:type", String)
71
131
  ], RetailCommissionInboundMessage.prototype, "soldAt", void 0);
132
+ __decorate([
133
+ (0, class_validator_1.IsISO8601)(),
134
+ __metadata("design:type", String)
135
+ ], RetailCommissionInboundMessage.prototype, "occurredAt", void 0);
136
+ __decorate([
137
+ (0, class_validator_1.IsOptional)(),
138
+ (0, class_validator_1.IsString)(),
139
+ __metadata("design:type", String)
140
+ ], RetailCommissionInboundMessage.prototype, "cancelReason", void 0);
72
141
  __decorate([
73
142
  (0, class_validator_1.IsArray)(),
74
143
  (0, class_validator_1.ArrayMinSize)(1),
@@ -139,6 +139,7 @@ export * from './events/SaleCompletedV2';
139
139
  export * from './events/SaleCancelledV2';
140
140
  export * from './events/SessionExpiredV1';
141
141
  export * from './enums/RetailPromotionInboundMessageTypeEnum';
142
+ export * from './enums/RetailCommissionInboundMessageTypeEnum';
142
143
  export * from './events/RetailPromotionInboundMessage';
143
144
  export * from './events/RetailCommissionInboundMessage';
144
145
  export * from './enums/WizardSessionLookupStatusEnum';
@@ -170,6 +170,7 @@ __exportStar(require("./events/SaleCompletedV2"), exports);
170
170
  __exportStar(require("./events/SaleCancelledV2"), exports);
171
171
  __exportStar(require("./events/SessionExpiredV1"), exports);
172
172
  __exportStar(require("./enums/RetailPromotionInboundMessageTypeEnum"), exports);
173
+ __exportStar(require("./enums/RetailCommissionInboundMessageTypeEnum"), exports);
173
174
  __exportStar(require("./events/RetailPromotionInboundMessage"), exports);
174
175
  __exportStar(require("./events/RetailCommissionInboundMessage"), exports);
175
176
  // Lookup privado por lote (GET /private/wizard-sessions/batch)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.491.0",
3
+ "version": "3.492.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,20 @@
1
+ import type { LoanInstallmentStatusEnum } from '../enums/LoanInstallmentStatusEnum';
2
+
3
+ /** `eventType` del outbox cuando una cuota queda pagada. */
4
+ export const INSTALLMENT_PAID_EVENT_TYPE = 'InstallmentPaidV1';
5
+
6
+ /**
7
+ * Payload de `InstallmentPaidV1`: una cuota que pasó a `PAID` o `PAID_IN_ADVANCE` por cualquier
8
+ * camino (cargo de la cuota, revisión, adelanto, liquidación o recuperación). Se escribe al outbox en
9
+ * la misma transacción que la cuota. Sin PII.
10
+ */
11
+ export interface InstallmentPaidV1Payload {
12
+ creditId: string;
13
+ installmentNumber: number;
14
+ /** Lo pagado de la cuota en total (capital + interés + IVA), en centavos. */
15
+ paidCents: number;
16
+ /** Instante del pago (ISO): decide el corte de la renta. */
17
+ paidAt: string;
18
+ installmentStatus: LoanInstallmentStatusEnum;
19
+ paymentId: string;
20
+ }
@@ -10,6 +10,7 @@ export * from './dtos/LoanBorrower';
10
10
  export * from './dtos/LoanBeneficiary';
11
11
  export * from './dtos/LoanCredit';
12
12
  export * from './dtos/LoanInstallment';
13
+ export * from './dtos/InstallmentPaidEvent';
13
14
  export * from './dtos/LoanContract';
14
15
  export * from './dtos/ActivationChecklist';
15
16
  export * from './dtos/AppliedPromotionSnapshot';
@@ -2,6 +2,11 @@ import type { CommissionAccrualStatusEnum } from '../enums/CommissionAccrualStat
2
2
  import type { CommissionPayeeTypeEnum } from '../enums/CommissionPayeeTypeEnum';
3
3
  import type { SaleFinancierEnum } from '../../retailWizard/enums/SaleFinancierEnum';
4
4
  import type { CommissionCalcTrace } from './CommissionCalcTrace';
5
+ import type { CommissionBonusModeEnum } from '../enums/CommissionBonusModeEnum';
6
+ import type { ProductCategoryEnum } from '../../retailCatalog/enums/ProductCategoryEnum';
7
+ import type { ProductTierEnum } from '../../retailCatalog/enums/ProductTierEnum';
8
+ import type { LinePaymentTypeEnum } from '../../retailWizard/enums/LinePaymentTypeEnum';
9
+ import type { WizardLineRoleEnum } from '../../retailWizard/enums/WizardLineRoleEnum';
5
10
 
6
11
  /**
7
12
  * El devengo: lo que se le debe a un vendedor por UNA venta.
@@ -52,6 +57,10 @@ export interface CommissionAccrual {
52
57
  payoutId: string | null;
53
58
  reversalReason: string | null;
54
59
  calcTrace: CommissionCalcTrace;
60
+ /** Los bonos por venta que sumaron, uno por regla y por pieza. Solo en devengos calculados con reglas. */
61
+ appliedBonuses?: CommissionAppliedBonus[];
62
+ /** Suma de `appliedBonuses`. Solo en devengos calculados con reglas. */
63
+ subtotalBonusCents?: number;
55
64
  }
56
65
 
57
66
  /**
@@ -78,4 +87,33 @@ export interface CommissionSaleInput {
78
87
  /** `CASH` | `CREDIT`, para `PERCENT_BY_PAYMENT`. */
79
88
  paymentType: string;
80
89
  soldAt: string;
90
+ /** Las líneas de la venta. Las ventas que se calculan con reglas siempre las traen. */
91
+ lines?: CommissionSaleLine[];
92
+ }
93
+
94
+ /** Una línea de la venta, congelada en el devengo. */
95
+ export interface CommissionSaleLine {
96
+ lineId: string;
97
+ sku: string;
98
+ qty: number;
99
+ /** Precio neto de la línea completa (todas sus piezas). */
100
+ netCents: number;
101
+ category: ProductCategoryEnum | null;
102
+ tier: ProductTierEnum | null;
103
+ brand: string | null;
104
+ paymentType: LinePaymentTypeEnum;
105
+ /** `GIFT` = regalo: no comisiona ni cuenta en la posición. */
106
+ role?: WizardLineRoleEnum;
107
+ }
108
+
109
+ /** Un bono por venta que sumó en el devengo. */
110
+ export interface CommissionAppliedBonus {
111
+ ruleId: string;
112
+ name: string;
113
+ lineId: string;
114
+ sku: string;
115
+ /** Posición de la pieza en el contador de la regla dentro del periodo. */
116
+ position: number;
117
+ mode: CommissionBonusModeEnum;
118
+ amountCents: number;
81
119
  }