@fiado/type-kit 3.551.0 → 3.553.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 (119) hide show
  1. package/_test_/unit/common/InputPatternValidators.test.ts +64 -0
  2. package/_test_/unit/common/InputPatterns.test.ts +104 -0
  3. package/_test_/unit/retailCatalog/backofficeRequests.test.ts +1 -1
  4. package/_test_/unit/retailCatalog/singlePriceFields.test.ts +48 -0
  5. package/_test_/unit/retailIntegration/eventPayloads.test.ts +1 -0
  6. package/_test_/unit/retailOrg/dtos/requests/inputPatternRequests.test.ts +93 -0
  7. package/_test_/unit/retailPromotions/giftOptionValue.test.ts +20 -0
  8. package/_test_/unit/retailWizard/linesWithoutListPrice.test.ts +40 -0
  9. package/bin/common/constants/InputPatterns.d.ts +25 -0
  10. package/bin/common/constants/InputPatterns.js +28 -0
  11. package/bin/common/decorators/UpperCase.d.ts +2 -0
  12. package/bin/common/decorators/UpperCase.js +7 -0
  13. package/bin/common/helpers/imeiChecksum.d.ts +2 -0
  14. package/bin/common/helpers/imeiChecksum.js +20 -0
  15. package/bin/common/index.d.ts +8 -0
  16. package/bin/common/index.js +10 -0
  17. package/bin/common/validators/IsMxPhone.d.ts +3 -0
  18. package/bin/common/validators/IsMxPhone.js +8 -0
  19. package/bin/common/validators/IsMxZipCode.d.ts +3 -0
  20. package/bin/common/validators/IsMxZipCode.js +8 -0
  21. package/bin/common/validators/IsRfc.d.ts +3 -0
  22. package/bin/common/validators/IsRfc.js +8 -0
  23. package/bin/common/validators/IsSku.d.ts +3 -0
  24. package/bin/common/validators/IsSku.js +8 -0
  25. package/bin/common/validators/matchesInputPattern.d.ts +3 -0
  26. package/bin/common/validators/matchesInputPattern.js +16 -0
  27. package/bin/helpers/constans/regex.js +2 -1
  28. package/bin/loanCredit/dtos/LoanContractDetails.js +2 -2
  29. package/bin/loanCredit/dtos/LoanDeviceEnrollItem.js +4 -4
  30. package/bin/retailCatalog/constants/SkuPattern.d.ts +2 -2
  31. package/bin/retailCatalog/constants/SkuPattern.js +5 -3
  32. package/bin/retailCatalog/dtos/Product.d.ts +2 -1
  33. package/bin/retailCatalog/dtos/ProductComponent.js +1 -1
  34. package/bin/retailCatalog/dtos/requests/BackofficeCreateKitRequest.js +1 -1
  35. package/bin/retailCatalog/dtos/requests/BackofficeCreateProductRequest.js +1 -1
  36. package/bin/retailCatalog/dtos/requests/BackofficeCreateServiceRequest.js +1 -1
  37. package/bin/retailCatalog/dtos/requests/BackofficeCreateSkuPriceRequest.d.ts +1 -0
  38. package/bin/retailCatalog/dtos/requests/BackofficeCreateTransferRequest.js +1 -1
  39. package/bin/retailCatalog/dtos/requests/BackofficeRegisterAdjustmentRequest.js +1 -1
  40. package/bin/retailCatalog/dtos/requests/BackofficeRegisterEntryRequest.js +1 -1
  41. package/bin/retailCatalog/dtos/requests/CreateProductRequest.d.ts +1 -0
  42. package/bin/retailCatalog/dtos/requests/CreateProductRequest.js +1 -1
  43. package/bin/retailCatalog/dtos/requests/ReturnPieceCondition.js +1 -1
  44. package/bin/retailCatalog/dtos/requests/SyncInventoryRequest.d.ts +1 -0
  45. package/bin/retailCatalog/dtos/requests/SyncInventoryRequest.js +1 -1
  46. package/bin/retailCatalog/dtos/requests/UpdateProductRequest.d.ts +1 -0
  47. package/bin/retailCatalog/dtos/responses/InventoryLensResponse.d.ts +1 -1
  48. package/bin/retailCatalog/dtos/responses/ReserveStockResponse.d.ts +4 -1
  49. package/bin/retailCatalog/dtos/responses/SkuPriceEntry.d.ts +2 -1
  50. package/bin/retailCatalog/dtos/responses/StoreCatalogItem.d.ts +1 -1
  51. package/bin/retailIntegration/constants/retailIntegrationLimits.d.ts +1 -1
  52. package/bin/retailIntegration/constants/retailIntegrationLimits.js +2 -2
  53. package/bin/retailOrg/dtos/requests/CreateRetailUserRequest.js +2 -1
  54. package/bin/retailOrg/dtos/requests/CreateRetailerRequest.d.ts +1 -1
  55. package/bin/retailOrg/dtos/requests/CreateRetailerRequest.js +6 -2
  56. package/bin/retailOrg/dtos/requests/CreateStoreRequest.js +2 -1
  57. package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.d.ts +1 -1
  58. package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.js +6 -2
  59. package/bin/retailOrg/dtos/requests/ProvisionRetailUserRequest.js +2 -1
  60. package/bin/retailOrg/dtos/requests/RetailAddressInput.d.ts +1 -1
  61. package/bin/retailOrg/dtos/requests/RetailAddressInput.js +2 -2
  62. package/bin/retailOrg/dtos/requests/UpdateRetailUserRequest.js +2 -1
  63. package/bin/retailOrg/dtos/requests/UpdateRetailerRequest.js +2 -1
  64. package/bin/retailOrg/dtos/requests/UpdateStoreRequest.js +2 -1
  65. package/bin/retailPromotions/dtos/responses/WizardSalePromotionResponses.d.ts +4 -1
  66. package/bin/retailWizard/dtos/SaleLine.d.ts +2 -1
  67. package/bin/retailWizard/dtos/WizardGiftLine.d.ts +1 -1
  68. package/bin/retailWizard/dtos/WizardLinePromotionFields.d.ts +1 -1
  69. package/bin/retailWizard/dtos/WizardReservedLine.d.ts +2 -1
  70. package/bin/retailWizard/events/SaleCompletedV1.d.ts +1 -1
  71. package/bin/retailWizard/events/SaleCompletedV2.d.ts +1 -1
  72. package/package.json +1 -1
  73. package/src/common/constants/InputPatterns.ts +32 -0
  74. package/src/common/decorators/UpperCase.ts +5 -0
  75. package/src/common/helpers/imeiChecksum.ts +16 -0
  76. package/src/common/index.ts +12 -0
  77. package/src/common/validators/IsMxPhone.ts +7 -0
  78. package/src/common/validators/IsMxZipCode.ts +7 -0
  79. package/src/common/validators/IsRfc.ts +7 -0
  80. package/src/common/validators/IsSku.ts +7 -0
  81. package/src/common/validators/matchesInputPattern.ts +24 -0
  82. package/src/helpers/constans/regex.ts +2 -1
  83. package/src/loanCredit/dtos/LoanContractDetails.ts +1 -1
  84. package/src/loanCredit/dtos/LoanDeviceEnrollItem.ts +3 -3
  85. package/src/retailCatalog/constants/SkuPattern.ts +2 -2
  86. package/src/retailCatalog/dtos/Product.ts +2 -1
  87. package/src/retailCatalog/dtos/ProductComponent.ts +2 -2
  88. package/src/retailCatalog/dtos/requests/BackofficeCreateKitRequest.ts +2 -2
  89. package/src/retailCatalog/dtos/requests/BackofficeCreateProductRequest.ts +2 -2
  90. package/src/retailCatalog/dtos/requests/BackofficeCreateServiceRequest.ts +2 -2
  91. package/src/retailCatalog/dtos/requests/BackofficeCreateSkuPriceRequest.ts +1 -0
  92. package/src/retailCatalog/dtos/requests/BackofficeCreateTransferRequest.ts +2 -2
  93. package/src/retailCatalog/dtos/requests/BackofficeRegisterAdjustmentRequest.ts +2 -2
  94. package/src/retailCatalog/dtos/requests/BackofficeRegisterEntryRequest.ts +2 -2
  95. package/src/retailCatalog/dtos/requests/CreateProductRequest.ts +3 -2
  96. package/src/retailCatalog/dtos/requests/ReturnPieceCondition.ts +2 -2
  97. package/src/retailCatalog/dtos/requests/SyncInventoryRequest.ts +3 -2
  98. package/src/retailCatalog/dtos/requests/UpdateProductRequest.ts +1 -0
  99. package/src/retailCatalog/dtos/responses/InventoryLensResponse.ts +1 -1
  100. package/src/retailCatalog/dtos/responses/ReserveStockResponse.ts +4 -1
  101. package/src/retailCatalog/dtos/responses/SkuPriceEntry.ts +2 -1
  102. package/src/retailCatalog/dtos/responses/StoreCatalogItem.ts +1 -1
  103. package/src/retailIntegration/constants/retailIntegrationLimits.ts +2 -2
  104. package/src/retailOrg/dtos/requests/CreateRetailUserRequest.ts +2 -1
  105. package/src/retailOrg/dtos/requests/CreateRetailerRequest.ts +8 -4
  106. package/src/retailOrg/dtos/requests/CreateStoreRequest.ts +2 -1
  107. package/src/retailOrg/dtos/requests/CreateSubdistributorRequest.ts +8 -4
  108. package/src/retailOrg/dtos/requests/ProvisionRetailUserRequest.ts +2 -1
  109. package/src/retailOrg/dtos/requests/RetailAddressInput.ts +3 -3
  110. package/src/retailOrg/dtos/requests/UpdateRetailUserRequest.ts +2 -1
  111. package/src/retailOrg/dtos/requests/UpdateRetailerRequest.ts +2 -1
  112. package/src/retailOrg/dtos/requests/UpdateStoreRequest.ts +2 -1
  113. package/src/retailPromotions/dtos/responses/WizardSalePromotionResponses.ts +4 -1
  114. package/src/retailWizard/dtos/SaleLine.ts +2 -1
  115. package/src/retailWizard/dtos/WizardGiftLine.ts +1 -1
  116. package/src/retailWizard/dtos/WizardLinePromotionFields.ts +1 -1
  117. package/src/retailWizard/dtos/WizardReservedLine.ts +2 -1
  118. package/src/retailWizard/events/SaleCompletedV1.ts +1 -1
  119. package/src/retailWizard/events/SaleCompletedV2.ts +1 -1
@@ -17,7 +17,7 @@ const SHORT_TEXT = 120;
17
17
  /** Largo máximo de un texto largo del contrato (nombre, domicilio, razón social). */
18
18
  const LONG_TEXT = 300;
19
19
  /** IMEI: exactamente 15 dígitos. */
20
- const IMEI_PATTERN = /^\d{15}$/;
20
+ const InputPatterns_1 = require("../../common/constants/InputPatterns");
21
21
  /** Datos del acreditado tal como se imprimen en el contrato (Sección II.1). */
22
22
  class LoanContractBorrowerDetails {
23
23
  }
@@ -135,7 +135,7 @@ __decorate([
135
135
  (0, class_transformer_1.Expose)(),
136
136
  (0, class_validator_1.IsOptional)(),
137
137
  (0, class_validator_1.IsString)(),
138
- (0, class_validator_1.Matches)(IMEI_PATTERN, { message: 'imei admite solo 15 dígitos' }),
138
+ (0, class_validator_1.Matches)(InputPatterns_1.IMEI_PATTERN, { message: 'imei admite solo 15 dígitos' }),
139
139
  __metadata("design:type", String)
140
140
  ], LoanContractDeviceDetails.prototype, "imei", void 0);
141
141
  __decorate([
@@ -15,7 +15,7 @@ const class_validator_1 = require("class-validator");
15
15
  const SkuPattern_1 = require("../../retailCatalog/constants/SkuPattern");
16
16
  const CreditIdPattern_1 = require("../constants/CreditIdPattern");
17
17
  /** Charset y largo del IMEI: exactamente 15 dígitos. */
18
- const IMEI_PATTERN = /^\d{15}$/;
18
+ const InputPatterns_1 = require("../../common/constants/InputPatterns");
19
19
  /** Plazo máximo del crédito en meses. */
20
20
  const MAX_TERM_MONTHS = 60;
21
21
  /** Ítem de enrolamiento: un crédito con el equipo que se va a enrolar en el MDM. */
@@ -31,14 +31,14 @@ __decorate([
31
31
  (0, class_transformer_1.Expose)(),
32
32
  (0, class_validator_1.IsString)(),
33
33
  (0, class_validator_1.IsNotEmpty)(),
34
- (0, class_validator_1.Matches)(IMEI_PATTERN, { message: 'imei admite solo 15 dígitos' }),
34
+ (0, class_validator_1.Matches)(InputPatterns_1.IMEI_PATTERN, { message: 'imei admite solo 15 dígitos' }),
35
35
  __metadata("design:type", String)
36
36
  ], LoanDeviceEnrollItem.prototype, "imei", void 0);
37
37
  __decorate([
38
38
  (0, class_transformer_1.Expose)(),
39
39
  (0, class_validator_1.IsOptional)(),
40
40
  (0, class_validator_1.IsString)(),
41
- (0, class_validator_1.Matches)(IMEI_PATTERN, { message: 'imei2 admite solo 15 dígitos' }),
41
+ (0, class_validator_1.Matches)(InputPatterns_1.IMEI_PATTERN, { message: 'imei2 admite solo 15 dígitos' }),
42
42
  __metadata("design:type", String)
43
43
  ], LoanDeviceEnrollItem.prototype, "imei2", void 0);
44
44
  __decorate([
@@ -46,7 +46,7 @@ __decorate([
46
46
  (0, class_validator_1.IsString)(),
47
47
  (0, class_validator_1.IsNotEmpty)(),
48
48
  (0, class_validator_1.MaxLength)(64),
49
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'productSku admite solo [A-Za-z0-9-]' }),
49
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
50
50
  __metadata("design:type", String)
51
51
  ], LoanDeviceEnrollItem.prototype, "productSku", void 0);
52
52
  __decorate([
@@ -1,2 +1,2 @@
1
- /** Charset permitido para el SKU: alfanumérico + guion, 1-64 chars. */
2
- export declare const SKU_PATTERN: RegExp;
1
+ /** Charset del SKU: letras, dígitos, guiones y espacios entre palabras; el tope de 64 va con `@Length`. */
2
+ export { SKU_PATTERN, SKU_MESSAGE } from '../../common/constants/InputPatterns';
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SKU_PATTERN = void 0;
4
- /** Charset permitido para el SKU: alfanumérico + guion, 1-64 chars. */
5
- exports.SKU_PATTERN = /^[A-Za-z0-9-]+$/;
3
+ exports.SKU_MESSAGE = exports.SKU_PATTERN = void 0;
4
+ /** Charset del SKU: letras, dígitos, guiones y espacios entre palabras; el tope de 64 va con `@Length`. */
5
+ var InputPatterns_1 = require("../../common/constants/InputPatterns");
6
+ Object.defineProperty(exports, "SKU_PATTERN", { enumerable: true, get: function () { return InputPatterns_1.SKU_PATTERN; } });
7
+ Object.defineProperty(exports, "SKU_MESSAGE", { enumerable: true, get: function () { return InputPatterns_1.SKU_MESSAGE; } });
@@ -27,7 +27,8 @@ export declare class Product {
27
27
  /** `null` = Sin gama. */
28
28
  tier: ProductTierEnum | null;
29
29
  basePriceCents: number;
30
- listPriceCents: number | null;
30
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
31
+ listPriceCents?: number | null;
31
32
  eligibleFinanciers: string[];
32
33
  mdmEnabled: boolean;
33
34
  mdmProvider: MdmProviderEnum | null;
@@ -17,7 +17,7 @@ class ProductComponent {
17
17
  }
18
18
  exports.ProductComponent = ProductComponent;
19
19
  __decorate([
20
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
20
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
21
21
  (0, class_validator_1.Length)(1, 64),
22
22
  (0, class_validator_1.IsString)(),
23
23
  __metadata("design:type", String)
@@ -19,7 +19,7 @@ class BackofficeCreateKitRequest {
19
19
  }
20
20
  exports.BackofficeCreateKitRequest = BackofficeCreateKitRequest;
21
21
  __decorate([
22
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
22
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
23
23
  (0, class_validator_1.Length)(1, 64),
24
24
  (0, class_validator_1.IsString)(),
25
25
  __metadata("design:type", String)
@@ -25,7 +25,7 @@ class BackofficeCreateProductRequest {
25
25
  }
26
26
  exports.BackofficeCreateProductRequest = BackofficeCreateProductRequest;
27
27
  __decorate([
28
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
28
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
29
29
  (0, class_validator_1.Length)(1, 64),
30
30
  (0, class_validator_1.IsString)(),
31
31
  __metadata("design:type", String)
@@ -17,7 +17,7 @@ class BackofficeCreateServiceRequest {
17
17
  }
18
18
  exports.BackofficeCreateServiceRequest = BackofficeCreateServiceRequest;
19
19
  __decorate([
20
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
20
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
21
21
  (0, class_validator_1.Length)(1, 64),
22
22
  (0, class_validator_1.IsString)(),
23
23
  __metadata("design:type", String)
@@ -1,5 +1,6 @@
1
1
  /** Body de POST /backoffice/inventory/skus/{sku}/prices (backofficeCreateSkuPrice); crea un PRICE# nuevo con origen BACKOFFICE. */
2
2
  export declare class BackofficeCreateSkuPriceRequest {
3
3
  basePriceCents: number;
4
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
4
5
  listPriceCents?: number | null;
5
6
  }
@@ -27,7 +27,7 @@ __decorate([
27
27
  __metadata("design:type", String)
28
28
  ], BackofficeCreateTransferRequest.prototype, "toStoreId", void 0);
29
29
  __decorate([
30
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
30
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
31
31
  (0, class_validator_1.Length)(1, 64),
32
32
  (0, class_validator_1.IsString)(),
33
33
  __metadata("design:type", String)
@@ -24,7 +24,7 @@ __decorate([
24
24
  __metadata("design:type", String)
25
25
  ], BackofficeRegisterAdjustmentRequest.prototype, "storeId", void 0);
26
26
  __decorate([
27
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
27
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
28
28
  (0, class_validator_1.Length)(1, 64),
29
29
  (0, class_validator_1.IsString)(),
30
30
  __metadata("design:type", String)
@@ -23,7 +23,7 @@ __decorate([
23
23
  __metadata("design:type", String)
24
24
  ], BackofficeRegisterEntryRequest.prototype, "storeId", void 0);
25
25
  __decorate([
26
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
26
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
27
27
  (0, class_validator_1.Length)(1, 64),
28
28
  (0, class_validator_1.IsString)(),
29
29
  __metadata("design:type", String)
@@ -17,6 +17,7 @@ export declare class CreateProductRequest {
17
17
  imageUrl?: string | null;
18
18
  tier: ProductTierEnum;
19
19
  basePriceCents: number;
20
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
20
21
  listPriceCents?: number | null;
21
22
  eligibleFinanciers: string[];
22
23
  mdmEnabled: boolean;
@@ -24,7 +24,7 @@ class CreateProductRequest {
24
24
  }
25
25
  exports.CreateProductRequest = CreateProductRequest;
26
26
  __decorate([
27
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
27
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
28
28
  (0, class_validator_1.Length)(1, 64),
29
29
  (0, class_validator_1.IsString)(),
30
30
  __metadata("design:type", String)
@@ -24,7 +24,7 @@ class ReturnPieceCondition {
24
24
  exports.ReturnPieceCondition = ReturnPieceCondition;
25
25
  __decorate([
26
26
  (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
27
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
28
28
  (0, class_validator_1.Length)(1, 64),
29
29
  (0, class_validator_1.IsString)(),
30
30
  __metadata("design:type", String)
@@ -6,6 +6,7 @@ import { TrackingModeEnum } from '../../enums/TrackingModeEnum';
6
6
  import { ProductComponent } from '../ProductComponent';
7
7
  /** Precio de un producto en la puerta de entrada; crea PRICE# solo si cambió el monto. */
8
8
  export declare class SyncPrice {
9
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
9
10
  listPriceCents?: number | null;
10
11
  basePriceCents: number;
11
12
  effectiveFrom: string;
@@ -43,7 +43,7 @@ class SyncProduct {
43
43
  }
44
44
  exports.SyncProduct = SyncProduct;
45
45
  __decorate([
46
- (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: 'sku admite solo [A-Za-z0-9-]' }),
46
+ (0, class_validator_1.Matches)(SkuPattern_1.SKU_PATTERN, { message: SkuPattern_1.SKU_MESSAGE }),
47
47
  (0, class_validator_1.Length)(1, 64),
48
48
  (0, class_validator_1.IsString)(),
49
49
  __metadata("design:type", String)
@@ -16,6 +16,7 @@ export declare class UpdateProductRequest {
16
16
  imageUrl?: string | null;
17
17
  tier?: ProductTierEnum;
18
18
  basePriceCents?: number;
19
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
19
20
  listPriceCents?: number | null;
20
21
  eligibleFinanciers?: string[];
21
22
  mdmEnabled?: boolean;
@@ -61,7 +61,7 @@ export interface InventoryLensSkuItem {
61
61
  criticalStock: boolean;
62
62
  /** Unidades de este SKU vendidas hoy en esta tienda, **financiadas por SureKeep**. */
63
63
  soldTodayUnits: number;
64
- /** Precio de contado en centavos (`listPriceCents`, o `basePriceCents` si no hay lista). */
64
+ /** Precio de contado en centavos (`basePriceCents`). */
65
65
  cashPriceCents: number;
66
66
  }
67
67
  /** Una fila del tab `transfers`: mover unidades de un SKU de una tienda con excedente a una en crítico. */
@@ -14,7 +14,10 @@ export interface ReservedComponent {
14
14
  export interface ReserveStockResponse {
15
15
  expiresAt: string;
16
16
  basePriceCents: number;
17
- listPriceCents: number | null;
17
+ /** @deprecated Usa `giftValueCents`; en reservas GIFT trae el mismo valor, en las demás `null`. */
18
+ listPriceCents?: number | null;
19
+ /** Solo en reservas `purpose: GIFT`: valor del regalo, su precio de venta. */
20
+ giftValueCents?: number;
18
21
  /** Llave del registro PRICE# del que salió el precio fijado. */
19
22
  priceSk: string;
20
23
  eligibleFinanciers: string[];
@@ -2,7 +2,8 @@ import type { PriceSourceEnum } from '../../enums/PriceSourceEnum';
2
2
  /** Un registro del historial de precios PRICE# de un SKU. */
3
3
  export interface SkuPriceEntry {
4
4
  effectiveFrom: string;
5
- listPriceCents: number | null;
5
+ /** @deprecated Ya no se usa; el único precio es `basePriceCents`. */
6
+ listPriceCents?: number | null;
6
7
  basePriceCents: number;
7
8
  source: PriceSourceEnum;
8
9
  createdBy: string;
@@ -36,7 +36,7 @@ export interface StoreCatalogItem {
36
36
  itemType?: ItemTypeEnum;
37
37
  /** Nombre visible para kits y servicios, que no tienen marca/modelo. */
38
38
  description?: string;
39
- /** Precio de lista de respaldo para un regalo: el precio vigente o, si no hay, product.basePriceCents. */
39
+ /** @deprecated Ya no se usa; el valor de un regalo es `basePriceCents`. */
40
40
  listPriceCents?: number;
41
41
  /** Prioridad de venta de 0 a 100; «Recomendados» ordena por ella. */
42
42
  salePriority?: number;
@@ -14,7 +14,7 @@ export declare const RETAIL_STORE_CODE_MAX_LENGTH = 10;
14
14
  /** Código postal: de 4 a 10 caracteres. */
15
15
  export declare const RETAIL_ZIP_CODE_MIN_LENGTH = 4;
16
16
  export declare const RETAIL_ZIP_CODE_MAX_LENGTH = 10;
17
- /** SKU del catálogo del retailer. */
17
+ /** SKU del catálogo del retailer: el charset de `SKU_PATTERN` con tope de 64. */
18
18
  export declare const RETAIL_SKU_PATTERN: RegExp;
19
19
  /** Decimal del contrato: string con dos decimales, nunca negativo. */
20
20
  export declare const RETAIL_DECIMAL_PATTERN: RegExp;
@@ -17,7 +17,7 @@ exports.RETAIL_STORE_CODE_MAX_LENGTH = 10;
17
17
  /** Código postal: de 4 a 10 caracteres. */
18
18
  exports.RETAIL_ZIP_CODE_MIN_LENGTH = 4;
19
19
  exports.RETAIL_ZIP_CODE_MAX_LENGTH = 10;
20
- /** SKU del catálogo del retailer. */
21
- exports.RETAIL_SKU_PATTERN = /^[A-Za-z0-9-]{1,64}$/;
20
+ /** SKU del catálogo del retailer: el charset de `SKU_PATTERN` con tope de 64. */
21
+ exports.RETAIL_SKU_PATTERN = /^(?=.{1,64}$)[A-Za-z0-9-]+(?: +[A-Za-z0-9-]+)*$/;
22
22
  /** Decimal del contrato: string con dos decimales, nunca negativo. */
23
23
  exports.RETAIL_DECIMAL_PATTERN = /^\d+\.\d{2}$/;
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const CollectorSeniorityEnum_1 = require("../../enums/CollectorSeniorityEnum");
16
16
  const EmploymentTypeEnum_1 = require("../../enums/EmploymentTypeEnum");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
17
18
  /**
18
19
  * Body de POST /retailers/:retailerId/users — alta de usuario retail (el `retailerId` sale del path;
19
20
  * `cognitoSub` enlaza con la identidad Cognito validada vía platform-rbac por api-invoker).
@@ -56,7 +57,7 @@ __decorate([
56
57
  __decorate([
57
58
  (0, class_transformer_1.Expose)(),
58
59
  (0, class_validator_1.IsOptional)(),
59
- (0, class_validator_1.IsString)(),
60
+ (0, IsMxPhone_1.IsMxPhone)(),
60
61
  __metadata("design:type", String)
61
62
  ], CreateRetailUserRequest.prototype, "phone", void 0);
62
63
  __decorate([
@@ -9,7 +9,7 @@ export declare class CreateRetailerRequest {
9
9
  type: RetailerTypeEnum;
10
10
  name: string;
11
11
  legalName: string;
12
- /** RFC mexicano — 12 (persona moral / empresa) o 13 (persona física). */
12
+ /** RFC — 12 (persona moral) o 13 (persona física); se pasa a mayúsculas antes de validar. */
13
13
  rfc: string;
14
14
  contactEmail: string;
15
15
  contactPhone: string;
@@ -14,6 +14,9 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const RetailerTypeEnum_1 = require("../../enums/RetailerTypeEnum");
16
16
  const RetailAddressInput_1 = require("./RetailAddressInput");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
18
+ const IsRfc_1 = require("../../../common/validators/IsRfc");
19
+ const UpperCase_1 = require("../../../common/decorators/UpperCase");
17
20
  /**
18
21
  * Body de POST /retailers — alta de un retailer raíz (SureKeep Fase 1 — pista Retail).
19
22
  * Los campos server-assigned (`retailerId`, `parentId`, `status`, `createdAt/By`, `updatedAt/By`)
@@ -40,7 +43,8 @@ __decorate([
40
43
  __decorate([
41
44
  (0, class_transformer_1.Expose)(),
42
45
  (0, class_validator_1.IsString)(),
43
- (0, class_validator_1.Length)(12, 13),
46
+ (0, UpperCase_1.UpperCase)(),
47
+ (0, IsRfc_1.IsRfc)(),
44
48
  __metadata("design:type", String)
45
49
  ], CreateRetailerRequest.prototype, "rfc", void 0);
46
50
  __decorate([
@@ -50,7 +54,7 @@ __decorate([
50
54
  ], CreateRetailerRequest.prototype, "contactEmail", void 0);
51
55
  __decorate([
52
56
  (0, class_transformer_1.Expose)(),
53
- (0, class_validator_1.IsString)(),
57
+ (0, IsMxPhone_1.IsMxPhone)(),
54
58
  __metadata("design:type", String)
55
59
  ], CreateRetailerRequest.prototype, "contactPhone", void 0);
56
60
  __decorate([
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const GeoLocation_1 = require("../GeoLocation");
16
16
  const RetailAddressInput_1 = require("./RetailAddressInput");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
17
18
  /**
18
19
  * Body de POST /retailers/:retailerId/stores — alta de tienda física (el `retailerId` sale del path).
19
20
  * `location` (coordenada {lat,lng}) es OBLIGATORIA; los campos nullable van presentes-pero-nulos.
@@ -54,7 +55,7 @@ __decorate([
54
55
  ], CreateStoreRequest.prototype, "location", void 0);
55
56
  __decorate([
56
57
  (0, class_transformer_1.Expose)(),
57
- (0, class_validator_1.IsString)(),
58
+ (0, IsMxPhone_1.IsMxPhone)(),
58
59
  __metadata("design:type", String)
59
60
  ], CreateStoreRequest.prototype, "phone", void 0);
60
61
  __decorate([
@@ -11,7 +11,7 @@ export declare class CreateSubdistributorRequest {
11
11
  type: RetailerTypeEnum.SUBDISTRIBUTOR | RetailerTypeEnum.FRANCHISE;
12
12
  name: string;
13
13
  legalName: string;
14
- /** RFC mexicano — 12 (persona moral / empresa) o 13 (persona física). */
14
+ /** RFC — 12 (persona moral) o 13 (persona física); se pasa a mayúsculas antes de validar. */
15
15
  rfc: string;
16
16
  contactEmail: string;
17
17
  contactPhone: string;
@@ -14,6 +14,9 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const RetailerTypeEnum_1 = require("../../enums/RetailerTypeEnum");
16
16
  const RetailAddressInput_1 = require("./RetailAddressInput");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
18
+ const IsRfc_1 = require("../../../common/validators/IsRfc");
19
+ const UpperCase_1 = require("../../../common/decorators/UpperCase");
17
20
  /**
18
21
  * Body de POST /retailers/:retailerId/subdistributors — alta de un retailer hijo colgando de
19
22
  * `:retailerId` (el `parentId` sale del path param, NO del body).
@@ -42,7 +45,8 @@ __decorate([
42
45
  __decorate([
43
46
  (0, class_transformer_1.Expose)(),
44
47
  (0, class_validator_1.IsString)(),
45
- (0, class_validator_1.Length)(12, 13),
48
+ (0, UpperCase_1.UpperCase)(),
49
+ (0, IsRfc_1.IsRfc)(),
46
50
  __metadata("design:type", String)
47
51
  ], CreateSubdistributorRequest.prototype, "rfc", void 0);
48
52
  __decorate([
@@ -52,7 +56,7 @@ __decorate([
52
56
  ], CreateSubdistributorRequest.prototype, "contactEmail", void 0);
53
57
  __decorate([
54
58
  (0, class_transformer_1.Expose)(),
55
- (0, class_validator_1.IsString)(),
59
+ (0, IsMxPhone_1.IsMxPhone)(),
56
60
  __metadata("design:type", String)
57
61
  ], CreateSubdistributorRequest.prototype, "contactPhone", void 0);
58
62
  __decorate([
@@ -15,6 +15,7 @@ const class_validator_1 = require("class-validator");
15
15
  const CollectorSeniorityEnum_1 = require("../../enums/CollectorSeniorityEnum");
16
16
  const EmploymentTypeEnum_1 = require("../../enums/EmploymentTypeEnum");
17
17
  const PermissionScope_1 = require("../../../platformRbac/enums/PermissionScope");
18
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
18
19
  /**
19
20
  * Body de POST /retailers/:retailerId/users/provision — alta de usuario retail ORQUESTADA (SureKeep F1,
20
21
  * scope mirror). Invierte el orden del alta clásica: en vez de recibir un `cognitoSub` ya existente,
@@ -77,7 +78,7 @@ __decorate([
77
78
  __decorate([
78
79
  (0, class_transformer_1.Expose)(),
79
80
  (0, class_validator_1.IsOptional)(),
80
- (0, class_validator_1.IsString)(),
81
+ (0, IsMxPhone_1.IsMxPhone)(),
81
82
  __metadata("design:type", String)
82
83
  ], ProvisionRetailUserRequest.prototype, "phone", void 0);
83
84
  __decorate([
@@ -23,7 +23,7 @@ export declare class RetailAddressInput {
23
23
  neighborhood?: string;
24
24
  city: string;
25
25
  state: string;
26
- /** Código postal (espejo de `LocationAddress.zipCode`). */
26
+ /** Código postal MX de 5 dígitos (espejo de `LocationAddress.zipCode`). */
27
27
  zipCode: string;
28
28
  /** País ISO. OPCIONAL — sin slot en `LocationAddress` (TD-SKF1-007). */
29
29
  country?: string;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.RetailAddressInput = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
+ const IsMxZipCode_1 = require("../../../common/validators/IsMxZipCode");
15
16
  /**
16
17
  * Dirección comercial de entrada (input validado) para los requests de creación/edición del dominio
17
18
  * retail-org-business. A diferencia del DTO de entidad (que reutiliza `LocationAddress`, laxo a
@@ -71,8 +72,7 @@ __decorate([
71
72
  ], RetailAddressInput.prototype, "state", void 0);
72
73
  __decorate([
73
74
  (0, class_transformer_1.Expose)(),
74
- (0, class_validator_1.IsString)(),
75
- (0, class_validator_1.Length)(4, 10),
75
+ (0, IsMxZipCode_1.IsMxZipCode)(),
76
76
  __metadata("design:type", String)
77
77
  ], RetailAddressInput.prototype, "zipCode", void 0);
78
78
  __decorate([
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const CollectorSeniorityEnum_1 = require("../../enums/CollectorSeniorityEnum");
16
16
  const EmploymentTypeEnum_1 = require("../../enums/EmploymentTypeEnum");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
17
18
  /**
18
19
  * Body de PUT /users/:retailUserId — edición de usuario retail (campos editables opcionales).
19
20
  * NO edita `cognitoSub` (identidad) ni `homeStoreId` (para reubicar hay `TransferRetailUserRequest`);
@@ -49,7 +50,7 @@ __decorate([
49
50
  __decorate([
50
51
  (0, class_transformer_1.Expose)(),
51
52
  (0, class_validator_1.IsOptional)(),
52
- (0, class_validator_1.IsString)(),
53
+ (0, IsMxPhone_1.IsMxPhone)(),
53
54
  __metadata("design:type", String)
54
55
  ], UpdateRetailUserRequest.prototype, "phone", void 0);
55
56
  __decorate([
@@ -13,6 +13,7 @@ exports.UpdateRetailerRequest = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const RetailAddressInput_1 = require("./RetailAddressInput");
16
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
16
17
  /**
17
18
  * Body de PUT /retailers/:retailerId — edición de campos comerciales del retailer.
18
19
  * Solo campos editables (todos opcionales). NO se puede editar `type`, `rfc` ni `status`
@@ -42,7 +43,7 @@ __decorate([
42
43
  __decorate([
43
44
  (0, class_transformer_1.Expose)(),
44
45
  (0, class_validator_1.IsOptional)(),
45
- (0, class_validator_1.IsString)(),
46
+ (0, IsMxPhone_1.IsMxPhone)(),
46
47
  __metadata("design:type", String)
47
48
  ], UpdateRetailerRequest.prototype, "contactPhone", void 0);
48
49
  __decorate([
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const GeoLocation_1 = require("../GeoLocation");
16
16
  const RetailAddressInput_1 = require("./RetailAddressInput");
17
+ const IsMxPhone_1 = require("../../../common/validators/IsMxPhone");
17
18
  /**
18
19
  * Body de PUT /stores/:storeId — edición de tienda (campos editables opcionales). El status se
19
20
  * cambia con el endpoint dedicado → `ChangeStoreStatusRequest`. Si se envía `location`/`address`,
@@ -58,7 +59,7 @@ __decorate([
58
59
  __decorate([
59
60
  (0, class_transformer_1.Expose)(),
60
61
  (0, class_validator_1.IsOptional)(),
61
- (0, class_validator_1.IsString)(),
62
+ (0, IsMxPhone_1.IsMxPhone)(),
62
63
  __metadata("design:type", String)
63
64
  ], UpdateStoreRequest.prototype, "phone", void 0);
64
65
  __decorate([
@@ -42,7 +42,10 @@ export interface ListStoreSalePromotionsResponse {
42
42
  export interface GiftOption {
43
43
  sku: string;
44
44
  name: string;
45
- listPriceCents: number;
45
+ /** Valor del regalo: su precio de venta. */
46
+ valueCents?: number;
47
+ /** @deprecated Usa `valueCents`; trae el mismo valor. */
48
+ listPriceCents?: number;
46
49
  inStock: boolean;
47
50
  }
48
51
  /** Lo que se entrega al cerrar («Después en la venta»). `quantity`: recargas o meses de garantía. */
@@ -8,7 +8,8 @@ export interface SaleLine extends WizardLinePromotionFields {
8
8
  sku: string;
9
9
  qty: number;
10
10
  basePriceCents: number;
11
- listPriceCents: number | null;
11
+ /** @deprecated Ya no se escribe; el valor de un regalo vive en `originalPriceCents`. */
12
+ listPriceCents?: number | null;
12
13
  /** Llave del registro PRICE# del que salió el precio. */
13
14
  priceSk: string;
14
15
  paymentType: LinePaymentTypeEnum;
@@ -1,6 +1,6 @@
1
1
  import type { WizardLineRoleEnum } from '../enums/WizardLineRoleEnum';
2
2
  import type { WizardReservedLine } from './WizardReservedLine';
3
- /** Línea GIFT: ligada a un ancla, con su promo y el precio de lista que se regala. */
3
+ /** Línea GIFT: ligada a un ancla, con su promo y el valor del regalo (su precio de venta). */
4
4
  export type WizardGiftLine = WizardReservedLine & {
5
5
  role: WizardLineRoleEnum.GIFT;
6
6
  linkedLineId: string;
@@ -11,7 +11,7 @@ export interface WizardLinePromotionFields {
11
11
  discountCode?: string;
12
12
  /** Descuento total de la línea; neto = basePriceCents × qty − discountCents. */
13
13
  discountCents?: number;
14
- /** Precio antes del descuento; en un regalo, el valor de lista con la línea a $0. */
14
+ /** Precio antes del descuento; en un regalo, su precio de venta con la línea a $0. */
15
15
  originalPriceCents?: number;
16
16
  /** Descuento de cada promo en la línea; sin el campo, la de `promotionId` lleva todo menos el código. */
17
17
  promotionDiscounts?: LinePromotionAmount[];
@@ -17,7 +17,8 @@ export interface WizardReservedLine extends WizardLinePromotionFields {
17
17
  expiresAt: string;
18
18
  /** Precio fijado de la línea (el del kit si es kit). */
19
19
  basePriceCents: number | null;
20
- listPriceCents: number | null;
20
+ /** @deprecated Ya no se escribe; el valor de un regalo vive en `originalPriceCents`. */
21
+ listPriceCents?: number | null;
21
22
  /** Llave del registro PRICE# del que salió el precio. */
22
23
  priceSk: string | null;
23
24
  eligibleFinanciers: string[];
@@ -23,7 +23,7 @@ export interface SaleCompletedV1 {
23
23
  * sin `type` un crédito con $1,300 de enganche era indistinguible de un contado de $1,300.
24
24
  */
25
25
  type?: SaleTypeEnum;
26
- /** Precio de lista del equipo; en contado coincide con `amountCents`. Sin equipo se omite. */
26
+ /** Precio neto del equipo: su precio de venta menos su descuento. Sin equipo se omite. */
27
27
  equipmentPriceCents?: number;
28
28
  /** Enganche cobrado (solo `type=CREDIT`). */
29
29
  downPaymentCents?: number;
@@ -30,7 +30,7 @@ export interface SaleCompletedV2 {
30
30
  imei: string | null;
31
31
  /** Lo COBRADO en caja. En contado == precio del equipo; en CREDIT es SOLO el enganche. */
32
32
  amountCents: number;
33
- /** Precio de lista del equipo — la base de comisión. `null` en ventas sin el dato. */
33
+ /** Precio neto del equipo (venta menos descuento), la base de comisión. `null` sin el dato. */
34
34
  equipmentPriceCents: number | null;
35
35
  downPaymentCents: number | null;
36
36
  creditId: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.551.0",
3
+ "version": "3.553.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",