@fiado/type-kit 3.550.0 → 3.552.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 (95) hide show
  1. package/_test_/unit/retailCatalog/singlePriceFields.test.ts +48 -0
  2. package/_test_/unit/retailCommission/commissionPayments.test.ts +168 -0
  3. package/_test_/unit/retailCommission/commissionRules.test.ts +53 -0
  4. package/_test_/unit/retailIntegration/eventPayloads.test.ts +1 -0
  5. package/_test_/unit/retailOrg/dtos/RetailUser.test.ts +47 -0
  6. package/_test_/unit/retailOrg/dtos/requests/retailUserWalletRequests.test.ts +41 -0
  7. package/_test_/unit/retailOrg/dtos/responses/retailUserWalletResponses.test.ts +30 -0
  8. package/_test_/unit/retailOrg/enums/RetailUserWalletLinkMethodEnum.test.ts +12 -0
  9. package/_test_/unit/retailPromotions/giftOptionValue.test.ts +20 -0
  10. package/_test_/unit/retailWizard/linesWithoutListPrice.test.ts +40 -0
  11. package/bin/retailCatalog/dtos/Product.d.ts +2 -1
  12. package/bin/retailCatalog/dtos/requests/BackofficeCreateSkuPriceRequest.d.ts +1 -0
  13. package/bin/retailCatalog/dtos/requests/CreateProductRequest.d.ts +1 -0
  14. package/bin/retailCatalog/dtos/requests/SyncInventoryRequest.d.ts +1 -0
  15. package/bin/retailCatalog/dtos/requests/UpdateProductRequest.d.ts +1 -0
  16. package/bin/retailCatalog/dtos/responses/InventoryLensResponse.d.ts +1 -1
  17. package/bin/retailCatalog/dtos/responses/ReserveStockResponse.d.ts +4 -1
  18. package/bin/retailCatalog/dtos/responses/SkuPriceEntry.d.ts +2 -1
  19. package/bin/retailCatalog/dtos/responses/StoreCatalogItem.d.ts +1 -1
  20. package/bin/retailCommission/dtos/CommissionApi.d.ts +80 -1
  21. package/bin/retailCommission/dtos/CommissionLedger.d.ts +96 -0
  22. package/bin/retailCommission/dtos/CommissionLedger.js +2 -0
  23. package/bin/retailCommission/dtos/CommissionRule.d.ts +14 -1
  24. package/bin/retailCommission/enums/CommissionBillingPeriodEnum.d.ts +10 -0
  25. package/bin/retailCommission/enums/CommissionBillingPeriodEnum.js +14 -0
  26. package/bin/retailCommission/enums/CommissionLedgerMovementKindEnum.d.ts +14 -0
  27. package/bin/retailCommission/enums/CommissionLedgerMovementKindEnum.js +18 -0
  28. package/bin/retailCommission/enums/CommissionPayTimingEnum.d.ts +13 -0
  29. package/bin/retailCommission/enums/CommissionPayTimingEnum.js +17 -0
  30. package/bin/retailCommission/enums/CommissionPayTriggerEnum.d.ts +18 -0
  31. package/bin/retailCommission/enums/CommissionPayTriggerEnum.js +22 -0
  32. package/bin/retailCommission/enums/CommissionPaymentAttentionEnum.d.ts +14 -0
  33. package/bin/retailCommission/enums/CommissionPaymentAttentionEnum.js +18 -0
  34. package/bin/retailCommission/enums/CommissionPaymentStatusEnum.d.ts +14 -0
  35. package/bin/retailCommission/enums/CommissionPaymentStatusEnum.js +18 -0
  36. package/bin/retailCommission/index.d.ts +7 -0
  37. package/bin/retailCommission/index.js +7 -0
  38. package/bin/retailOrg/dtos/RetailUser.d.ts +13 -0
  39. package/bin/retailOrg/dtos/RetailUser.js +39 -0
  40. package/bin/retailOrg/dtos/requests/LinkRetailUserWalletRequest.d.ts +10 -0
  41. package/bin/retailOrg/dtos/requests/LinkRetailUserWalletRequest.js +37 -0
  42. package/bin/retailOrg/dtos/requests/LookupRetailUserWalletRequest.d.ts +10 -0
  43. package/bin/retailOrg/dtos/requests/LookupRetailUserWalletRequest.js +37 -0
  44. package/bin/retailOrg/dtos/responses/LookupRetailUserWalletResponse.d.ts +10 -0
  45. package/bin/retailOrg/dtos/responses/LookupRetailUserWalletResponse.js +2 -0
  46. package/bin/retailOrg/dtos/responses/PrivateRetailUserWalletResponse.d.ts +8 -0
  47. package/bin/retailOrg/dtos/responses/PrivateRetailUserWalletResponse.js +2 -0
  48. package/bin/retailOrg/enums/RetailUserWalletLinkMethodEnum.d.ts +11 -0
  49. package/bin/retailOrg/enums/RetailUserWalletLinkMethodEnum.js +15 -0
  50. package/bin/retailOrg/index.d.ts +6 -0
  51. package/bin/retailOrg/index.js +7 -0
  52. package/bin/retailOrg/validators/IsSingleWalletKeyConstraint.d.ts +6 -0
  53. package/bin/retailOrg/validators/IsSingleWalletKeyConstraint.js +24 -0
  54. package/bin/retailPromotions/dtos/responses/WizardSalePromotionResponses.d.ts +4 -1
  55. package/bin/retailWizard/dtos/SaleLine.d.ts +2 -1
  56. package/bin/retailWizard/dtos/WizardGiftLine.d.ts +1 -1
  57. package/bin/retailWizard/dtos/WizardLinePromotionFields.d.ts +1 -1
  58. package/bin/retailWizard/dtos/WizardReservedLine.d.ts +2 -1
  59. package/bin/retailWizard/events/SaleCompletedV1.d.ts +1 -1
  60. package/bin/retailWizard/events/SaleCompletedV2.d.ts +1 -1
  61. package/package.json +1 -1
  62. package/src/retailCatalog/dtos/Product.ts +2 -1
  63. package/src/retailCatalog/dtos/requests/BackofficeCreateSkuPriceRequest.ts +1 -0
  64. package/src/retailCatalog/dtos/requests/CreateProductRequest.ts +1 -0
  65. package/src/retailCatalog/dtos/requests/SyncInventoryRequest.ts +1 -0
  66. package/src/retailCatalog/dtos/requests/UpdateProductRequest.ts +1 -0
  67. package/src/retailCatalog/dtos/responses/InventoryLensResponse.ts +1 -1
  68. package/src/retailCatalog/dtos/responses/ReserveStockResponse.ts +4 -1
  69. package/src/retailCatalog/dtos/responses/SkuPriceEntry.ts +2 -1
  70. package/src/retailCatalog/dtos/responses/StoreCatalogItem.ts +1 -1
  71. package/src/retailCommission/dtos/CommissionApi.ts +97 -1
  72. package/src/retailCommission/dtos/CommissionLedger.ts +101 -0
  73. package/src/retailCommission/dtos/CommissionRule.ts +15 -1
  74. package/src/retailCommission/enums/CommissionBillingPeriodEnum.ts +10 -0
  75. package/src/retailCommission/enums/CommissionLedgerMovementKindEnum.ts +14 -0
  76. package/src/retailCommission/enums/CommissionPayTimingEnum.ts +13 -0
  77. package/src/retailCommission/enums/CommissionPayTriggerEnum.ts +18 -0
  78. package/src/retailCommission/enums/CommissionPaymentAttentionEnum.ts +14 -0
  79. package/src/retailCommission/enums/CommissionPaymentStatusEnum.ts +14 -0
  80. package/src/retailCommission/index.ts +7 -0
  81. package/src/retailOrg/dtos/RetailUser.ts +39 -0
  82. package/src/retailOrg/dtos/requests/LinkRetailUserWalletRequest.ts +24 -0
  83. package/src/retailOrg/dtos/requests/LookupRetailUserWalletRequest.ts +24 -0
  84. package/src/retailOrg/dtos/responses/LookupRetailUserWalletResponse.ts +11 -0
  85. package/src/retailOrg/dtos/responses/PrivateRetailUserWalletResponse.ts +8 -0
  86. package/src/retailOrg/enums/RetailUserWalletLinkMethodEnum.ts +11 -0
  87. package/src/retailOrg/index.ts +8 -0
  88. package/src/retailOrg/validators/IsSingleWalletKeyConstraint.ts +18 -0
  89. package/src/retailPromotions/dtos/responses/WizardSalePromotionResponses.ts +4 -1
  90. package/src/retailWizard/dtos/SaleLine.ts +2 -1
  91. package/src/retailWizard/dtos/WizardGiftLine.ts +1 -1
  92. package/src/retailWizard/dtos/WizardLinePromotionFields.ts +1 -1
  93. package/src/retailWizard/dtos/WizardReservedLine.ts +2 -1
  94. package/src/retailWizard/events/SaleCompletedV1.ts +1 -1
  95. package/src/retailWizard/events/SaleCompletedV2.ts +1 -1
@@ -4,8 +4,11 @@ import type { CommissionAddOn, CommissionCategory, CommissionPlanSnapshot, Commi
4
4
  import type { CommissionAccrual, CommissionAppliedBonus, CommissionSaleInput, CommissionSaleLine } from './CommissionAccrual';
5
5
  import type { CommissionAdjustment, CommissionAppliedMultiplier, CommissionAppliedThreshold, CommissionPayout, CommissionPayoutSeller, CommissionSellerBreakdown } from './CommissionPayout';
6
6
  import type { CommissionPolicies, CommissionRule, CommissionRuleCondition, CommissionRuleLevers, CommissionRuleScope, CommissionRuleSetSnapshot } from './CommissionRule';
7
+ import type { CommissionChainStatement, CommissionLedgerMovement, CommissionPayment, CommissionSellerBalance } from './CommissionLedger';
7
8
  import type { CommissionWindowEnum } from '../enums/CommissionWindowEnum';
9
+ import type { CommissionBillingPeriodEnum } from '../enums/CommissionBillingPeriodEnum';
8
10
  import type { CommissionCountByEnum } from '../enums/CommissionCountByEnum';
11
+ import type { CommissionPayTimingEnum } from '../enums/CommissionPayTimingEnum';
9
12
  import type { CommissionAggregateByEnum } from '../enums/CommissionAggregateByEnum';
10
13
  import type { CommissionSeriesByEnum } from '../enums/CommissionSeriesByEnum';
11
14
  import type { CommissionAccrualStatusEnum } from '../enums/CommissionAccrualStatusEnum';
@@ -197,6 +200,8 @@ export interface CommissionRuleInput {
197
200
  replacesOthers: boolean;
198
201
  /** Si la regla cuenta piezas o ventas. Ausente = `PIECE`. */
199
202
  countBy?: CommissionCountByEnum;
203
+ /** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
204
+ payTiming?: CommissionPayTimingEnum;
200
205
  }
201
206
  /** `POST /backoffice/commissions/rules` — la regla nace en borrador. */
202
207
  export type CreateRuleRequest = CommissionRuleInput;
@@ -231,7 +236,7 @@ export interface RuleHistoryResponse {
231
236
  export interface GetPoliciesResponse {
232
237
  policies: CommissionPolicies;
233
238
  }
234
- /** `PUT /backoffice/commissions/policies` — las dos políticas se guardan juntas. */
239
+ /** `PUT /backoffice/commissions/policies` — las políticas se guardan juntas. */
235
240
  export interface UpdatePoliciesRequest {
236
241
  clawback: {
237
242
  cancelacionDias: number;
@@ -242,6 +247,11 @@ export interface UpdatePoliciesRequest {
242
247
  multiplicadorMaxBps: number;
243
248
  ventanaDefault: CommissionWindowEnum;
244
249
  };
250
+ /** Opcional para que un editor que todavía no la manda siga funcionando. */
251
+ payouts?: {
252
+ walletDeposits: boolean;
253
+ chainBillingPeriod: CommissionBillingPeriodEnum;
254
+ };
245
255
  }
246
256
  export interface UpdatePoliciesResponse {
247
257
  policies: CommissionPolicies;
@@ -375,6 +385,8 @@ export interface CommissionRuleView {
375
385
  effectiveTo: string | null;
376
386
  /** Si la regla cuenta piezas o ventas. Ausente = `PIECE`. */
377
387
  countBy?: CommissionCountByEnum;
388
+ /** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
389
+ payTiming?: CommissionPayTimingEnum;
378
390
  }
379
391
  /** Lo pagado en varios cortes. */
380
392
  export interface MyCommissionsTotals {
@@ -411,3 +423,70 @@ export interface GetMyCommissionsResponse {
411
423
  /** Tope del multiplicador de la política; `null` sin política. */
412
424
  multiplierCapBps: number | null;
413
425
  }
426
+ /** `GET /backoffice/commissions/payments/attention` — el reporte "Por pagar" de la cadena. */
427
+ export interface GetPaymentAttentionResponse {
428
+ /** Saldos con exigible sin depositar, con su motivo. */
429
+ pending: CommissionSellerBalance[];
430
+ /** Depósitos sin confirmar: "Requiere revisión". */
431
+ unverified: CommissionPayment[];
432
+ /** Saldos con exigible negativo. */
433
+ debts: CommissionSellerBalance[];
434
+ }
435
+ /** `POST /backoffice/commissions/payments/sellers/{sellerId}/paid-outside` */
436
+ export interface MarkPaidOutsideRequest {
437
+ amountCents: number;
438
+ /** Obligatorio: dinero que sale sin depósito tiene que poder auditarse. */
439
+ reason: string;
440
+ }
441
+ /** `POST /backoffice/commissions/payments/{paymentId}/resolve` — revisión de un depósito sin confirmar. */
442
+ export interface ResolvePaymentRequest {
443
+ /** `true` = sí se depositó; `false` = no, y el monto vuelve al exigible. */
444
+ accredited: boolean;
445
+ /** El folio, cuando sí se depositó. */
446
+ transactionId?: string;
447
+ note: string;
448
+ }
449
+ /** `GET /backoffice/commissions/sellers/{sellerId}/ledger` — saldo e historial de un vendedor. */
450
+ export interface GetSellerLedgerResponse {
451
+ balance: CommissionSellerBalance;
452
+ movements: CommissionLedgerMovement[];
453
+ payments: CommissionPayment[];
454
+ }
455
+ /** `GET /backoffice/commissions/statements` */
456
+ export interface ListStatementsResponse {
457
+ statements: CommissionChainStatement[];
458
+ }
459
+ /** `GET /backoffice/commissions/statements/{statementId}` — el estado de cuenta y sus depósitos. */
460
+ export interface GetStatementResponse {
461
+ statement: CommissionChainStatement;
462
+ payments: CommissionPayment[];
463
+ }
464
+ /** `GET /commissions/me/payments` — los pagos del vendedor que llama. */
465
+ export interface GetMyPaymentsResponse {
466
+ /** `null` mientras no tiene nada en el libro. */
467
+ balance: CommissionSellerBalance | null;
468
+ payments: CommissionPayment[];
469
+ }
470
+ /** `POST /backoffice/commissions/payments/sellers/{sellerId}/retry` (202) — el pago quedó en la cola. */
471
+ export interface RetrySellerPaymentView {
472
+ sellerId: string;
473
+ /** Id del disparo `RETRY` con que se encoló. */
474
+ triggerId: string;
475
+ }
476
+ /** `POST /backoffice/commissions/payments/sellers/{sellerId}/paid-outside` (201) — el saldo nuevo y el movimiento escrito. */
477
+ export interface MarkPaidOutsideView {
478
+ balance: CommissionSellerBalance;
479
+ movement: CommissionLedgerMovement;
480
+ }
481
+ /** `POST /backoffice/commissions/payments/{paymentId}/resolve` — el depósito ya resuelto. */
482
+ export interface ResolvePaymentView {
483
+ payment: CommissionPayment;
484
+ }
485
+ /**
486
+ * `POST /private/retailers/{retailerId}/sellers/{sellerId}/payments/trigger?tenantId=` (202) — retail-org
487
+ * avisa que el vendedor vinculó su wallet. El cuerpo va vacío (`{}`).
488
+ */
489
+ export interface PrivateTriggerSellerPaymentResponse {
490
+ /** `false` si la cola no lo recibió: el saldo sigue pendiente y entra en el siguiente pago. */
491
+ enqueued: boolean;
492
+ }
@@ -0,0 +1,96 @@
1
+ import type { CommissionBillingPeriodEnum } from '../enums/CommissionBillingPeriodEnum';
2
+ import type { CommissionLedgerMovementKindEnum } from '../enums/CommissionLedgerMovementKindEnum';
3
+ import type { CommissionPayTimingEnum } from '../enums/CommissionPayTimingEnum';
4
+ import type { CommissionPaymentAttentionEnum } from '../enums/CommissionPaymentAttentionEnum';
5
+ import type { CommissionPaymentStatusEnum } from '../enums/CommissionPaymentStatusEnum';
6
+ /**
7
+ * Saldo de un vendedor en una cadena. Es parte del libro de pagos: cada peso que se le acredita, se
8
+ * le descuenta o se le deposita en su wallet. Montos en centavos; fechas en ISO.
9
+ */
10
+ export interface CommissionSellerBalance {
11
+ retailerId: string;
12
+ sellerId: string;
13
+ /** Ganado que todavía no toca pagar (reglas al cierre del mes). */
14
+ retainedCents: number;
15
+ /** Lo que se puede depositar ya. Negativo = el vendedor debe. */
16
+ payableCents: number;
17
+ /** Apartado para un depósito en curso o sin confirmar. */
18
+ inTransitCents: number;
19
+ /** Acumulado de todo lo ganado. */
20
+ earnedCents: number;
21
+ /** Acumulado de todo lo descontado. */
22
+ deductedCents: number;
23
+ /** Acumulado de lo depositado y confirmado. */
24
+ accreditedCents: number;
25
+ /** Acumulado de lo pagado por fuera. */
26
+ paidOutsideCents: number;
27
+ /** `null` si no necesita atención. */
28
+ attention: CommissionPaymentAttentionEnum | null;
29
+ /** Código del último rechazo, p. ej. `USER_NOT_ACTIVE`. */
30
+ attentionCode: string | null;
31
+ /** Desde cuándo tiene esa atención. */
32
+ attentionSince: string | null;
33
+ updatedAt: string;
34
+ }
35
+ /** Lo que una regla aporta a un movimiento. */
36
+ export interface CommissionLedgerMovementRule {
37
+ ruleId: string;
38
+ payTiming: CommissionPayTimingEnum;
39
+ cents: number;
40
+ }
41
+ /** Un movimiento del libro. Nunca cambia. */
42
+ export interface CommissionLedgerMovement {
43
+ /** Determinista por origen: una reentrega no duplica el movimiento. */
44
+ movementKey: string;
45
+ kind: CommissionLedgerMovementKindEnum;
46
+ periodId: string;
47
+ retainedDeltaCents: number;
48
+ payableDeltaCents: number;
49
+ byRule: CommissionLedgerMovementRule[];
50
+ saleId: string | null;
51
+ adjustmentId: string | null;
52
+ /** `YYYY-MM` de la liberación mensual. */
53
+ releaseMonth: string | null;
54
+ /** Obligatorio en lo pagado por fuera. */
55
+ reason: string | null;
56
+ createdAt: string;
57
+ createdBy: string;
58
+ }
59
+ /** Un depósito a la wallet del vendedor. Solo cambia su estado. */
60
+ export interface CommissionPayment {
61
+ /** También es la llave de idempotencia del depósito. */
62
+ paymentId: string;
63
+ retailerId: string;
64
+ sellerId: string;
65
+ amountCents: number;
66
+ status: CommissionPaymentStatusEnum;
67
+ /** La wallet a la que se depositó. */
68
+ directoryId: string;
69
+ /** Folio del depósito; `null` mientras no se confirma. */
70
+ transactionId: string | null;
71
+ errorCode: string | null;
72
+ /** Lo que ve el vendedor en su wallet; máximo 120 caracteres. */
73
+ concept: string;
74
+ requestedAt: string;
75
+ resolvedAt: string | null;
76
+ resolvedBy: string | null;
77
+ /** Nota de quien lo revisó a mano. */
78
+ note: string | null;
79
+ }
80
+ /**
81
+ * Estado de cuenta para cobrarle a la cadena: los depósitos confirmados del periodo. Lo pagado por
82
+ * fuera no entra. Se genera una vez y no cambia.
83
+ */
84
+ export interface CommissionChainStatement {
85
+ statementId: string;
86
+ retailerId: string;
87
+ period: CommissionBillingPeriodEnum;
88
+ /** `YYYY-MM-DD`, inclusive. */
89
+ startDate: string;
90
+ /** `YYYY-MM-DD`, inclusive. */
91
+ endDate: string;
92
+ accreditedCents: number;
93
+ paymentsCount: number;
94
+ sellersCount: number;
95
+ generatedAt: string;
96
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +1,11 @@
1
1
  import type { ProductCategoryEnum } from '../../retailCatalog/enums/ProductCategoryEnum';
2
2
  import type { ProductTierEnum } from '../../retailCatalog/enums/ProductTierEnum';
3
+ import type { CommissionBillingPeriodEnum } from '../enums/CommissionBillingPeriodEnum';
3
4
  import type { CommissionBonusModeEnum } from '../enums/CommissionBonusModeEnum';
4
5
  import type { CommissionCountByEnum } from '../enums/CommissionCountByEnum';
5
6
  import type { CommissionMetricEnum } from '../enums/CommissionMetricEnum';
6
7
  import type { CommissionOperatorEnum } from '../enums/CommissionOperatorEnum';
8
+ import type { CommissionPayTimingEnum } from '../enums/CommissionPayTimingEnum';
7
9
  import type { CommissionRuleStatusEnum } from '../enums/CommissionRuleStatusEnum';
8
10
  import type { CommissionWindowEnum } from '../enums/CommissionWindowEnum';
9
11
  /**
@@ -75,6 +77,8 @@ export interface CommissionRule {
75
77
  replacesOthers: boolean;
76
78
  /** Si la regla cuenta piezas o ventas. Ausente = `PIECE`. */
77
79
  countBy?: CommissionCountByEnum;
80
+ /** Cuándo se paga lo que gana. Ausente = `ON_CUT`. */
81
+ payTiming?: CommissionPayTimingEnum;
78
82
  /** Sube en cada guardado. */
79
83
  version: number;
80
84
  /** La versión que está en el plan vigente. `null` si nunca se publicó. */
@@ -102,10 +106,19 @@ export interface CommissionPolicyCommissions {
102
106
  editedBy: string;
103
107
  editedAt: string;
104
108
  }
105
- /** Políticas de la cadena. Cada una es `null` mientras la cadena no la guarda. */
109
+ /** Política de pagos a la wallet de los vendedores. */
110
+ export interface CommissionPayoutPolicy {
111
+ /** Depositar las comisiones a la wallet. Apagado, todo se calcula y queda pendiente. */
112
+ walletDeposits: boolean;
113
+ /** Cada cuánto se le cobra a la cadena. */
114
+ chainBillingPeriod: CommissionBillingPeriodEnum;
115
+ }
116
+ /** Políticas de la cadena. `clawback` y `commissions` son `null` mientras la cadena no las guarda. */
106
117
  export interface CommissionPolicies {
107
118
  clawback: CommissionPolicyClawback | null;
108
119
  commissions: CommissionPolicyCommissions | null;
120
+ /** Ausente = depósitos encendidos y cobro semanal. */
121
+ payouts?: CommissionPayoutPolicy;
109
122
  }
110
123
  /**
111
124
  * El plan vigente: las reglas publicadas y las políticas, congeladas en un snapshot inmutable.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cada cuánto se le cobra a la cadena lo que Fiado depositó a sus vendedores.
3
+ *
4
+ * WEEKLY - Semanal. Es el valor cuando la cadena no guardó la política.
5
+ * MONTHLY - Mensual.
6
+ */
7
+ export declare enum CommissionBillingPeriodEnum {
8
+ WEEKLY = "WEEKLY",
9
+ MONTHLY = "MONTHLY"
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionBillingPeriodEnum = void 0;
4
+ /**
5
+ * Cada cuánto se le cobra a la cadena lo que Fiado depositó a sus vendedores.
6
+ *
7
+ * WEEKLY - Semanal. Es el valor cuando la cadena no guardó la política.
8
+ * MONTHLY - Mensual.
9
+ */
10
+ var CommissionBillingPeriodEnum;
11
+ (function (CommissionBillingPeriodEnum) {
12
+ CommissionBillingPeriodEnum["WEEKLY"] = "WEEKLY";
13
+ CommissionBillingPeriodEnum["MONTHLY"] = "MONTHLY";
14
+ })(CommissionBillingPeriodEnum || (exports.CommissionBillingPeriodEnum = CommissionBillingPeriodEnum = {}));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tipo de movimiento del libro de pagos. Un movimiento nunca cambia.
3
+ *
4
+ * EARN - Ganado: suma al exigible o al retenido.
5
+ * DEDUCT - Descontado del exigible.
6
+ * RELEASE - Liberación mensual: pasa de retenido a exigible.
7
+ * PAID_OUTSIDE - Pagado por fuera de la wallet: sale del exigible sin depósito.
8
+ */
9
+ export declare enum CommissionLedgerMovementKindEnum {
10
+ EARN = "EARN",
11
+ DEDUCT = "DEDUCT",
12
+ RELEASE = "RELEASE",
13
+ PAID_OUTSIDE = "PAID_OUTSIDE"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionLedgerMovementKindEnum = void 0;
4
+ /**
5
+ * Tipo de movimiento del libro de pagos. Un movimiento nunca cambia.
6
+ *
7
+ * EARN - Ganado: suma al exigible o al retenido.
8
+ * DEDUCT - Descontado del exigible.
9
+ * RELEASE - Liberación mensual: pasa de retenido a exigible.
10
+ * PAID_OUTSIDE - Pagado por fuera de la wallet: sale del exigible sin depósito.
11
+ */
12
+ var CommissionLedgerMovementKindEnum;
13
+ (function (CommissionLedgerMovementKindEnum) {
14
+ CommissionLedgerMovementKindEnum["EARN"] = "EARN";
15
+ CommissionLedgerMovementKindEnum["DEDUCT"] = "DEDUCT";
16
+ CommissionLedgerMovementKindEnum["RELEASE"] = "RELEASE";
17
+ CommissionLedgerMovementKindEnum["PAID_OUTSIDE"] = "PAID_OUTSIDE";
18
+ })(CommissionLedgerMovementKindEnum || (exports.CommissionLedgerMovementKindEnum = CommissionLedgerMovementKindEnum = {}));
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Cuándo se paga lo que gana una regla.
3
+ *
4
+ * ON_SALE - Al momento: se vuelve exigible al registrar la venta. Solo para reglas que únicamente
5
+ * pagan bono por venta.
6
+ * ON_CUT - Al cierre de la semana. Es el valor cuando la regla no lo trae.
7
+ * MONTHLY - Al cierre del mes: se retiene hasta el día 1 del mes siguiente al lunes del corte.
8
+ */
9
+ export declare enum CommissionPayTimingEnum {
10
+ ON_SALE = "ON_SALE",
11
+ ON_CUT = "ON_CUT",
12
+ MONTHLY = "MONTHLY"
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionPayTimingEnum = void 0;
4
+ /**
5
+ * Cuándo se paga lo que gana una regla.
6
+ *
7
+ * ON_SALE - Al momento: se vuelve exigible al registrar la venta. Solo para reglas que únicamente
8
+ * pagan bono por venta.
9
+ * ON_CUT - Al cierre de la semana. Es el valor cuando la regla no lo trae.
10
+ * MONTHLY - Al cierre del mes: se retiene hasta el día 1 del mes siguiente al lunes del corte.
11
+ */
12
+ var CommissionPayTimingEnum;
13
+ (function (CommissionPayTimingEnum) {
14
+ CommissionPayTimingEnum["ON_SALE"] = "ON_SALE";
15
+ CommissionPayTimingEnum["ON_CUT"] = "ON_CUT";
16
+ CommissionPayTimingEnum["MONTHLY"] = "MONTHLY";
17
+ })(CommissionPayTimingEnum || (exports.CommissionPayTimingEnum = CommissionPayTimingEnum = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Qué pidió pagarle a un vendedor.
3
+ *
4
+ * SALE - Una venta con reglas al momento.
5
+ * CUT - El cierre del corte.
6
+ * RELEASE - La liberación mensual.
7
+ * ADJUSTMENT - Un ajuste manual.
8
+ * WALLET_LINKED - Se vinculó su wallet.
9
+ * RETRY - "Reintentar ahora" desde "Por pagar".
10
+ */
11
+ export declare enum CommissionPayTriggerEnum {
12
+ SALE = "SALE",
13
+ CUT = "CUT",
14
+ RELEASE = "RELEASE",
15
+ ADJUSTMENT = "ADJUSTMENT",
16
+ WALLET_LINKED = "WALLET_LINKED",
17
+ RETRY = "RETRY"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionPayTriggerEnum = void 0;
4
+ /**
5
+ * Qué pidió pagarle a un vendedor.
6
+ *
7
+ * SALE - Una venta con reglas al momento.
8
+ * CUT - El cierre del corte.
9
+ * RELEASE - La liberación mensual.
10
+ * ADJUSTMENT - Un ajuste manual.
11
+ * WALLET_LINKED - Se vinculó su wallet.
12
+ * RETRY - "Reintentar ahora" desde "Por pagar".
13
+ */
14
+ var CommissionPayTriggerEnum;
15
+ (function (CommissionPayTriggerEnum) {
16
+ CommissionPayTriggerEnum["SALE"] = "SALE";
17
+ CommissionPayTriggerEnum["CUT"] = "CUT";
18
+ CommissionPayTriggerEnum["RELEASE"] = "RELEASE";
19
+ CommissionPayTriggerEnum["ADJUSTMENT"] = "ADJUSTMENT";
20
+ CommissionPayTriggerEnum["WALLET_LINKED"] = "WALLET_LINKED";
21
+ CommissionPayTriggerEnum["RETRY"] = "RETRY";
22
+ })(CommissionPayTriggerEnum || (exports.CommissionPayTriggerEnum = CommissionPayTriggerEnum = {}));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Por qué el saldo de un vendedor aparece en "Por pagar".
3
+ *
4
+ * NO_WALLET - No tiene wallet vinculada.
5
+ * REJECTED - Su último depósito se rechazó (cuenta bloqueada, tope de nivel...); el código va aparte.
6
+ * PAUSED - La cadena apagó los depósitos a la wallet.
7
+ * DEBT - Su exigible es negativo: debe.
8
+ */
9
+ export declare enum CommissionPaymentAttentionEnum {
10
+ NO_WALLET = "NO_WALLET",
11
+ REJECTED = "REJECTED",
12
+ PAUSED = "PAUSED",
13
+ DEBT = "DEBT"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionPaymentAttentionEnum = void 0;
4
+ /**
5
+ * Por qué el saldo de un vendedor aparece en "Por pagar".
6
+ *
7
+ * NO_WALLET - No tiene wallet vinculada.
8
+ * REJECTED - Su último depósito se rechazó (cuenta bloqueada, tope de nivel...); el código va aparte.
9
+ * PAUSED - La cadena apagó los depósitos a la wallet.
10
+ * DEBT - Su exigible es negativo: debe.
11
+ */
12
+ var CommissionPaymentAttentionEnum;
13
+ (function (CommissionPaymentAttentionEnum) {
14
+ CommissionPaymentAttentionEnum["NO_WALLET"] = "NO_WALLET";
15
+ CommissionPaymentAttentionEnum["REJECTED"] = "REJECTED";
16
+ CommissionPaymentAttentionEnum["PAUSED"] = "PAUSED";
17
+ CommissionPaymentAttentionEnum["DEBT"] = "DEBT";
18
+ })(CommissionPaymentAttentionEnum || (exports.CommissionPaymentAttentionEnum = CommissionPaymentAttentionEnum = {}));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Estado de un depósito de comisiones a la wallet del vendedor.
3
+ *
4
+ * PENDING - El monto se apartó y el depósito está en curso.
5
+ * ACCREDITED - Depositado, con folio.
6
+ * FAILED - Rechazado sin mover dinero: el monto vuelve al exigible.
7
+ * UNVERIFIED - Resultado ambiguo: el monto sigue apartado y no se reintenta solo; alguien lo revisa.
8
+ */
9
+ export declare enum CommissionPaymentStatusEnum {
10
+ PENDING = "PENDING",
11
+ ACCREDITED = "ACCREDITED",
12
+ FAILED = "FAILED",
13
+ UNVERIFIED = "UNVERIFIED"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommissionPaymentStatusEnum = void 0;
4
+ /**
5
+ * Estado de un depósito de comisiones a la wallet del vendedor.
6
+ *
7
+ * PENDING - El monto se apartó y el depósito está en curso.
8
+ * ACCREDITED - Depositado, con folio.
9
+ * FAILED - Rechazado sin mover dinero: el monto vuelve al exigible.
10
+ * UNVERIFIED - Resultado ambiguo: el monto sigue apartado y no se reintenta solo; alguien lo revisa.
11
+ */
12
+ var CommissionPaymentStatusEnum;
13
+ (function (CommissionPaymentStatusEnum) {
14
+ CommissionPaymentStatusEnum["PENDING"] = "PENDING";
15
+ CommissionPaymentStatusEnum["ACCREDITED"] = "ACCREDITED";
16
+ CommissionPaymentStatusEnum["FAILED"] = "FAILED";
17
+ CommissionPaymentStatusEnum["UNVERIFIED"] = "UNVERIFIED";
18
+ })(CommissionPaymentStatusEnum || (exports.CommissionPaymentStatusEnum = CommissionPaymentStatusEnum = {}));
@@ -20,11 +20,18 @@ export * from './enums/CommissionCountByEnum';
20
20
  export * from './enums/CommissionAggregateByEnum';
21
21
  export * from './enums/CommissionSeriesByEnum';
22
22
  export * from './enums/CommissionSimulationSkipEnum';
23
+ export * from './enums/CommissionPayTimingEnum';
24
+ export * from './enums/CommissionBillingPeriodEnum';
25
+ export * from './enums/CommissionPaymentStatusEnum';
26
+ export * from './enums/CommissionPaymentAttentionEnum';
27
+ export * from './enums/CommissionLedgerMovementKindEnum';
28
+ export * from './enums/CommissionPayTriggerEnum';
23
29
  export * from './dtos/CommissionPlan';
24
30
  export * from './dtos/CommissionRule';
25
31
  export * from './dtos/CommissionCouponAccrual';
26
32
  export * from './dtos/CommissionCalcTrace';
27
33
  export * from './dtos/CommissionAccrual';
28
34
  export * from './dtos/CommissionPayout';
35
+ export * from './dtos/CommissionLedger';
29
36
  export * from './dtos/CommissionApi';
30
37
  export * from './dtos/PrivateLatestClosedPayout';
@@ -37,6 +37,12 @@ __exportStar(require("./enums/CommissionCountByEnum"), exports);
37
37
  __exportStar(require("./enums/CommissionAggregateByEnum"), exports);
38
38
  __exportStar(require("./enums/CommissionSeriesByEnum"), exports);
39
39
  __exportStar(require("./enums/CommissionSimulationSkipEnum"), exports);
40
+ __exportStar(require("./enums/CommissionPayTimingEnum"), exports);
41
+ __exportStar(require("./enums/CommissionBillingPeriodEnum"), exports);
42
+ __exportStar(require("./enums/CommissionPaymentStatusEnum"), exports);
43
+ __exportStar(require("./enums/CommissionPaymentAttentionEnum"), exports);
44
+ __exportStar(require("./enums/CommissionLedgerMovementKindEnum"), exports);
45
+ __exportStar(require("./enums/CommissionPayTriggerEnum"), exports);
40
46
  // Entidades del dominio
41
47
  __exportStar(require("./dtos/CommissionPlan"), exports);
42
48
  __exportStar(require("./dtos/CommissionRule"), exports);
@@ -44,6 +50,7 @@ __exportStar(require("./dtos/CommissionCouponAccrual"), exports);
44
50
  __exportStar(require("./dtos/CommissionCalcTrace"), exports);
45
51
  __exportStar(require("./dtos/CommissionAccrual"), exports);
46
52
  __exportStar(require("./dtos/CommissionPayout"), exports);
53
+ __exportStar(require("./dtos/CommissionLedger"), exports);
47
54
  // Contratos HTTP — uno por endpoint
48
55
  __exportStar(require("./dtos/CommissionApi"), exports);
49
56
  __exportStar(require("./dtos/PrivateLatestClosedPayout"), exports);
@@ -1,6 +1,7 @@
1
1
  import { CollectorSeniorityEnum } from '../enums/CollectorSeniorityEnum';
2
2
  import { EmploymentTypeEnum } from '../enums/EmploymentTypeEnum';
3
3
  import { RetailUserStatusEnum } from '../enums/RetailUserStatusEnum';
4
+ import { RetailUserWalletLinkMethodEnum } from '../enums/RetailUserWalletLinkMethodEnum';
4
5
  /**
5
6
  * RetailUser — usuario retail (empleado de tienda) de un retailer (SureKeep Fase 1 — pista Retail).
6
7
  * `cognitoSub` enlaza con la identidad en Cognito (validada vía platform-rbac por api-invoker).
@@ -28,6 +29,18 @@ export declare class RetailUser {
28
29
  /** Tiendas que cubre el cobrador (zona de cobranza); opcional. */
29
30
  coverageStoreIds?: string[];
30
31
  status: RetailUserStatusEnum;
32
+ /** Directorio de Fiado del dueño de la wallet PCF; `null` o ausente si no tiene wallet. */
33
+ fiadoDirectoryId?: string | null;
34
+ /** Cuenta PCF de la wallet. */
35
+ pcfAccountId?: string | null;
36
+ /** Cómo se encontró la wallet: por CLABE o por teléfono. */
37
+ walletLinkMethod?: RetailUserWalletLinkMethodEnum | null;
38
+ /** Últimos 4 dígitos de la CLABE; la CLABE completa no se guarda. */
39
+ walletClabeLast4?: string | null;
40
+ /** Cuándo se vinculó (ISO). */
41
+ walletLinkedAt?: string | null;
42
+ /** Quién la vinculó: el actorId del usuario del back office. */
43
+ walletLinkedBy?: string | null;
31
44
  createdAt: string;
32
45
  updatedAt: string;
33
46
  createdBy: string;
@@ -16,6 +16,7 @@ const regex_1 = require("../../helpers/constans/regex");
16
16
  const CollectorSeniorityEnum_1 = require("../enums/CollectorSeniorityEnum");
17
17
  const EmploymentTypeEnum_1 = require("../enums/EmploymentTypeEnum");
18
18
  const RetailUserStatusEnum_1 = require("../enums/RetailUserStatusEnum");
19
+ const RetailUserWalletLinkMethodEnum_1 = require("../enums/RetailUserWalletLinkMethodEnum");
19
20
  /**
20
21
  * RetailUser — usuario retail (empleado de tienda) de un retailer (SureKeep Fase 1 — pista Retail).
21
22
  * `cognitoSub` enlaza con la identidad en Cognito (validada vía platform-rbac por api-invoker).
@@ -89,6 +90,44 @@ __decorate([
89
90
  (0, class_validator_1.IsEnum)(RetailUserStatusEnum_1.RetailUserStatusEnum),
90
91
  __metadata("design:type", String)
91
92
  ], RetailUser.prototype, "status", void 0);
93
+ __decorate([
94
+ (0, class_transformer_1.Expose)(),
95
+ (0, class_validator_1.IsOptional)(),
96
+ (0, class_validator_1.IsString)(),
97
+ __metadata("design:type", String)
98
+ ], RetailUser.prototype, "fiadoDirectoryId", void 0);
99
+ __decorate([
100
+ (0, class_transformer_1.Expose)(),
101
+ (0, class_validator_1.IsOptional)(),
102
+ (0, class_validator_1.IsString)(),
103
+ __metadata("design:type", String)
104
+ ], RetailUser.prototype, "pcfAccountId", void 0);
105
+ __decorate([
106
+ (0, class_transformer_1.Expose)(),
107
+ (0, class_validator_1.IsOptional)(),
108
+ (0, class_validator_1.IsEnum)(RetailUserWalletLinkMethodEnum_1.RetailUserWalletLinkMethodEnum),
109
+ __metadata("design:type", String)
110
+ ], RetailUser.prototype, "walletLinkMethod", void 0);
111
+ __decorate([
112
+ (0, class_transformer_1.Expose)(),
113
+ (0, class_validator_1.IsOptional)(),
114
+ (0, class_validator_1.IsString)(),
115
+ (0, class_validator_1.Matches)(/^\d{4}$/, { message: 'walletClabeLast4 debe tener 4 dígitos' }),
116
+ __metadata("design:type", String)
117
+ ], RetailUser.prototype, "walletClabeLast4", void 0);
118
+ __decorate([
119
+ (0, class_transformer_1.Expose)(),
120
+ (0, class_validator_1.IsOptional)(),
121
+ (0, class_validator_1.IsString)(),
122
+ (0, class_validator_1.Matches)(regex_1.regexIso8601, { message: 'walletLinkedAt debe ser una fecha ISO 8601' }),
123
+ __metadata("design:type", String)
124
+ ], RetailUser.prototype, "walletLinkedAt", void 0);
125
+ __decorate([
126
+ (0, class_transformer_1.Expose)(),
127
+ (0, class_validator_1.IsOptional)(),
128
+ (0, class_validator_1.IsString)(),
129
+ __metadata("design:type", String)
130
+ ], RetailUser.prototype, "walletLinkedBy", void 0);
92
131
  __decorate([
93
132
  (0, class_transformer_1.Expose)(),
94
133
  (0, class_validator_1.IsString)(),
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Body de `PUT /retailers/{retailerId}/users/{retailUserId}/wallet`: vincula la wallet PCF del
3
+ * vendedor por CLABE o por teléfono, exactamente uno. El servidor vuelve a resolver la cuenta.
4
+ */
5
+ export declare class LinkRetailUserWalletRequest {
6
+ /** CLABE PCF, 18 dígitos. Solo se guardan los últimos 4; no va a logs completa. */
7
+ clabe?: string | null;
8
+ /** Teléfono de México: 10 dígitos, con o sin `+52`; retail-org lo normaliza a E.164. No va a logs completo. */
9
+ phone?: string | null;
10
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LinkRetailUserWalletRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const IsSingleWalletKeyConstraint_1 = require("../../validators/IsSingleWalletKeyConstraint");
16
+ /**
17
+ * Body de `PUT /retailers/{retailerId}/users/{retailUserId}/wallet`: vincula la wallet PCF del
18
+ * vendedor por CLABE o por teléfono, exactamente uno. El servidor vuelve a resolver la cuenta.
19
+ */
20
+ class LinkRetailUserWalletRequest {
21
+ }
22
+ exports.LinkRetailUserWalletRequest = LinkRetailUserWalletRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.ValidateIf)((o) => o.clabe != null || o.phone == null),
26
+ (0, class_validator_1.Validate)(IsSingleWalletKeyConstraint_1.IsSingleWalletKeyConstraint),
27
+ (0, class_validator_1.IsString)({ message: 'clabe debe ser texto' }),
28
+ (0, class_validator_1.Matches)(/^\d{18}$/, { message: 'clabe debe tener 18 dígitos' }),
29
+ __metadata("design:type", String)
30
+ ], LinkRetailUserWalletRequest.prototype, "clabe", void 0);
31
+ __decorate([
32
+ (0, class_transformer_1.Expose)(),
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsString)({ message: 'phone debe ser texto' }),
35
+ (0, class_validator_1.Matches)(/^(\+52)?\d{10}$/, { message: 'phone debe tener 10 dígitos, con o sin +52' }),
36
+ __metadata("design:type", String)
37
+ ], LinkRetailUserWalletRequest.prototype, "phone", void 0);