@fiado/type-kit 3.578.0 → 3.580.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 (163) hide show
  1. package/_test_/unit/platformRbac/dtos/levelEntityAdminDtos.test.ts +14 -0
  2. package/_test_/unit/retailCatalog/catalogEnums.test.ts +2 -2
  3. package/_test_/unit/retailCatalog/centralSaleAccepted.test.ts +54 -0
  4. package/_test_/unit/retailCatalog/renewedReservationLine.test.ts +23 -0
  5. package/_test_/unit/retailCatalog/sellInventoryRequest.test.ts +25 -0
  6. package/_test_/unit/retailCatalog/stockRequests.test.ts +14 -4
  7. package/_test_/unit/retailCatalog/ventaSaga.test.ts +7 -0
  8. package/_test_/unit/retailIntegration/reconciliationContracts.test.ts +121 -0
  9. package/_test_/unit/retailIntegration/retailIntegrationErrorCodes.test.ts +37 -0
  10. package/_test_/unit/retailIntegration/retailOutboundRequests.test.ts +46 -15
  11. package/_test_/unit/retailIntegration/retailSaleContracts.test.ts +160 -0
  12. package/_test_/unit/retailIntegration/retailSystemEnums.test.ts +1 -1
  13. package/_test_/unit/retailOrg/dtos/retailerIntegration.test.ts +92 -0
  14. package/_test_/unit/retailWizard/centralOutboundAndLiveCheck.test.ts +63 -0
  15. package/_test_/unit/retailWizard/centralSaleStatus.test.ts +49 -0
  16. package/_test_/unit/retailWizard/multiItemShapes.test.ts +2 -2
  17. package/bin/platformRbac/dtos/UpdateLevelEntityRequest.d.ts +3 -1
  18. package/bin/platformRbac/dtos/UpdateLevelEntityRequest.js +8 -1
  19. package/bin/retailCatalog/dtos/requests/ReturnStockRequest.d.ts +2 -0
  20. package/bin/retailCatalog/dtos/requests/ReturnStockRequest.js +5 -0
  21. package/bin/retailCatalog/dtos/requests/SellInventoryRequest.d.ts +9 -0
  22. package/bin/retailCatalog/dtos/requests/SellInventoryRequest.js +32 -0
  23. package/bin/retailCatalog/dtos/requests/SellStockRequest.d.ts +2 -2
  24. package/bin/retailCatalog/dtos/requests/SellStockRequest.js +1 -1
  25. package/bin/retailCatalog/dtos/responses/RenewReservationsResponse.d.ts +6 -0
  26. package/bin/retailCatalog/enums/InventoryInboundMessageTypeEnum.d.ts +2 -1
  27. package/bin/retailCatalog/enums/InventoryInboundMessageTypeEnum.js +1 -0
  28. package/bin/retailCatalog/enums/InventoryItemStatusEnum.d.ts +3 -1
  29. package/bin/retailCatalog/enums/InventoryItemStatusEnum.js +2 -0
  30. package/bin/retailCatalog/events/InventoryCentralSaleAcceptedMessage.d.ts +13 -0
  31. package/bin/retailCatalog/events/InventoryCentralSaleAcceptedMessage.js +55 -0
  32. package/bin/retailCatalog/events/InventoryInboundMessage.d.ts +2 -1
  33. package/bin/retailCatalog/events/InventorySaleAppliedMessage.d.ts +0 -2
  34. package/bin/retailCatalog/events/InventorySaleAppliedMessage.js +0 -6
  35. package/bin/retailCatalog/index.d.ts +2 -0
  36. package/bin/retailCatalog/index.js +2 -0
  37. package/bin/retailIntegration/constants/retailIntegrationErrorHttpStatus.d.ts +3 -0
  38. package/bin/retailIntegration/constants/retailIntegrationErrorHttpStatus.js +19 -0
  39. package/bin/retailIntegration/constants/retailIntegrationLimits.d.ts +2 -0
  40. package/bin/retailIntegration/constants/retailIntegrationLimits.js +3 -1
  41. package/bin/retailIntegration/dtos/CancelRetailSaleRequest.d.ts +6 -0
  42. package/bin/retailIntegration/dtos/CancelRetailSaleRequest.js +32 -0
  43. package/bin/retailIntegration/dtos/CheckRetailInventoryRequest.d.ts +7 -0
  44. package/bin/retailIntegration/dtos/CheckRetailInventoryRequest.js +43 -0
  45. package/bin/retailIntegration/dtos/GetReconciliationResponses.d.ts +35 -0
  46. package/bin/retailIntegration/dtos/GetReconciliationResponses.js +2 -0
  47. package/bin/retailIntegration/dtos/GetRetailInventoryRequest.d.ts +2 -2
  48. package/bin/retailIntegration/dtos/GetRetailInventoryRequest.js +2 -2
  49. package/bin/retailIntegration/dtos/ReconciliationPageMessage.d.ts +13 -0
  50. package/bin/retailIntegration/dtos/ReconciliationPageMessage.js +48 -0
  51. package/bin/retailIntegration/dtos/ReconciliationRunCounts.d.ts +9 -0
  52. package/bin/retailIntegration/dtos/ReconciliationRunCounts.js +2 -0
  53. package/bin/retailIntegration/dtos/RetailListQuery.d.ts +5 -0
  54. package/bin/retailIntegration/dtos/RetailListQuery.js +24 -0
  55. package/bin/retailIntegration/dtos/RetailOutboundResponses.d.ts +9 -0
  56. package/bin/retailIntegration/dtos/RetailPagedQuery.d.ts +2 -2
  57. package/bin/retailIntegration/dtos/RetailPagedQuery.js +2 -2
  58. package/bin/retailIntegration/dtos/RetailTenantQuery.d.ts +2 -1
  59. package/bin/retailIntegration/dtos/RetailTenantQuery.js +6 -1
  60. package/bin/retailIntegration/dtos/StartCatalogReconciliationRequest.d.ts +11 -0
  61. package/bin/retailIntegration/dtos/StartCatalogReconciliationRequest.js +28 -0
  62. package/bin/retailIntegration/dtos/StartOrgReconciliationRequest.d.ts +9 -0
  63. package/bin/retailIntegration/dtos/StartOrgReconciliationRequest.js +22 -0
  64. package/bin/retailIntegration/enums/InactiveReasonEnum.d.ts +5 -0
  65. package/bin/retailIntegration/enums/InactiveReasonEnum.js +9 -0
  66. package/bin/retailIntegration/enums/ReconciliationEntityEnum.d.ts +7 -0
  67. package/bin/retailIntegration/enums/ReconciliationEntityEnum.js +11 -0
  68. package/bin/retailIntegration/enums/ReconciliationRunStatusEnum.d.ts +7 -0
  69. package/bin/retailIntegration/enums/ReconciliationRunStatusEnum.js +11 -0
  70. package/bin/retailIntegration/enums/ReconciliationTriggerEnum.d.ts +6 -0
  71. package/bin/retailIntegration/enums/ReconciliationTriggerEnum.js +10 -0
  72. package/bin/retailIntegration/enums/RetailEventRejectCodeEnum.d.ts +3 -1
  73. package/bin/retailIntegration/enums/RetailEventRejectCodeEnum.js +2 -0
  74. package/bin/retailIntegration/enums/RetailIntegrationErrorCodeEnum.d.ts +23 -0
  75. package/bin/retailIntegration/enums/RetailIntegrationErrorCodeEnum.js +27 -0
  76. package/bin/retailIntegration/enums/RetailSaleLineRoleEnum.d.ts +4 -0
  77. package/bin/retailIntegration/enums/RetailSaleLineRoleEnum.js +8 -0
  78. package/bin/retailIntegration/enums/index.d.ts +6 -0
  79. package/bin/retailIntegration/enums/index.js +6 -0
  80. package/bin/retailIntegration/index.d.ts +9 -0
  81. package/bin/retailIntegration/index.js +9 -0
  82. package/bin/retailIntegration/models/RetailSystemSale.d.ts +8 -7
  83. package/bin/retailIntegration/models/RetailSystemSale.js +186 -0
  84. package/bin/retailOrg/dtos/Retailer.d.ts +5 -0
  85. package/bin/retailOrg/dtos/Retailer.js +20 -0
  86. package/bin/retailOrg/dtos/requests/ActivateRetailerIntegrationRequest.d.ts +5 -0
  87. package/bin/retailOrg/dtos/requests/ActivateRetailerIntegrationRequest.js +24 -0
  88. package/bin/retailOrg/dtos/responses/ActivateRetailerIntegrationResponse.d.ts +3 -0
  89. package/bin/retailOrg/dtos/responses/ActivateRetailerIntegrationResponse.js +2 -0
  90. package/bin/retailOrg/dtos/validation/RetailerValidationDto.d.ts +4 -0
  91. package/bin/retailOrg/enums/RetailIntegrationSystemEnum.d.ts +4 -0
  92. package/bin/retailOrg/enums/RetailIntegrationSystemEnum.js +8 -0
  93. package/bin/retailOrg/index.d.ts +3 -0
  94. package/bin/retailOrg/index.js +3 -0
  95. package/bin/retailWizard/dtos/Sale.d.ts +25 -0
  96. package/bin/retailWizard/dtos/WizardReservedLine.d.ts +3 -0
  97. package/bin/retailWizard/dtos/WizardSession.d.ts +3 -0
  98. package/bin/retailWizard/enums/CentralCancelStatusEnum.d.ts +18 -0
  99. package/bin/retailWizard/enums/CentralCancelStatusEnum.js +22 -0
  100. package/bin/retailWizard/enums/CentralLiveCheckEnum.d.ts +10 -0
  101. package/bin/retailWizard/enums/CentralLiveCheckEnum.js +14 -0
  102. package/bin/retailWizard/enums/CentralSyncStatusEnum.d.ts +8 -2
  103. package/bin/retailWizard/enums/CentralSyncStatusEnum.js +7 -1
  104. package/bin/retailWizard/enums/RetailCentralOutboundMessageTypeEnum.d.ts +5 -0
  105. package/bin/retailWizard/enums/RetailCentralOutboundMessageTypeEnum.js +9 -0
  106. package/bin/retailWizard/enums/WizardLineStatusEnum.d.ts +3 -1
  107. package/bin/retailWizard/enums/WizardLineStatusEnum.js +2 -0
  108. package/bin/retailWizard/events/RetailCentralOutboundMessage.d.ts +9 -0
  109. package/bin/retailWizard/events/RetailCentralOutboundMessage.js +42 -0
  110. package/bin/retailWizard/index.d.ts +4 -0
  111. package/bin/retailWizard/index.js +4 -0
  112. package/package.json +1 -1
  113. package/src/platformRbac/dtos/UpdateLevelEntityRequest.ts +3 -1
  114. package/src/retailCatalog/dtos/requests/ReturnStockRequest.ts +6 -1
  115. package/src/retailCatalog/dtos/requests/SellInventoryRequest.ts +19 -0
  116. package/src/retailCatalog/dtos/requests/SellStockRequest.ts +4 -4
  117. package/src/retailCatalog/dtos/responses/RenewReservationsResponse.ts +7 -0
  118. package/src/retailCatalog/enums/InventoryInboundMessageTypeEnum.ts +1 -0
  119. package/src/retailCatalog/enums/InventoryItemStatusEnum.ts +2 -0
  120. package/src/retailCatalog/events/InventoryCentralSaleAcceptedMessage.ts +36 -0
  121. package/src/retailCatalog/events/InventoryInboundMessage.ts +5 -1
  122. package/src/retailCatalog/events/InventorySaleAppliedMessage.ts +1 -7
  123. package/src/retailCatalog/index.ts +2 -0
  124. package/src/retailIntegration/constants/retailIntegrationErrorHttpStatus.ts +17 -0
  125. package/src/retailIntegration/constants/retailIntegrationLimits.ts +3 -0
  126. package/src/retailIntegration/dtos/CancelRetailSaleRequest.ts +9 -0
  127. package/src/retailIntegration/dtos/CheckRetailInventoryRequest.ts +20 -0
  128. package/src/retailIntegration/dtos/GetReconciliationResponses.ts +37 -0
  129. package/src/retailIntegration/dtos/GetRetailInventoryRequest.ts +2 -2
  130. package/src/retailIntegration/dtos/ReconciliationPageMessage.ts +32 -0
  131. package/src/retailIntegration/dtos/ReconciliationRunCounts.ts +9 -0
  132. package/src/retailIntegration/dtos/RetailListQuery.ts +10 -0
  133. package/src/retailIntegration/dtos/RetailOutboundResponses.ts +11 -0
  134. package/src/retailIntegration/dtos/RetailPagedQuery.ts +2 -2
  135. package/src/retailIntegration/dtos/RetailTenantQuery.ts +5 -1
  136. package/src/retailIntegration/dtos/StartCatalogReconciliationRequest.ts +19 -0
  137. package/src/retailIntegration/dtos/StartOrgReconciliationRequest.ts +13 -0
  138. package/src/retailIntegration/enums/InactiveReasonEnum.ts +5 -0
  139. package/src/retailIntegration/enums/ReconciliationEntityEnum.ts +7 -0
  140. package/src/retailIntegration/enums/ReconciliationRunStatusEnum.ts +7 -0
  141. package/src/retailIntegration/enums/ReconciliationTriggerEnum.ts +6 -0
  142. package/src/retailIntegration/enums/RetailEventRejectCodeEnum.ts +2 -0
  143. package/src/retailIntegration/enums/RetailIntegrationErrorCodeEnum.ts +23 -0
  144. package/src/retailIntegration/enums/RetailSaleLineRoleEnum.ts +4 -0
  145. package/src/retailIntegration/enums/index.ts +6 -0
  146. package/src/retailIntegration/index.ts +9 -0
  147. package/src/retailIntegration/models/RetailSystemSale.ts +45 -37
  148. package/src/retailOrg/dtos/Retailer.ts +19 -1
  149. package/src/retailOrg/dtos/requests/ActivateRetailerIntegrationRequest.ts +10 -0
  150. package/src/retailOrg/dtos/responses/ActivateRetailerIntegrationResponse.ts +5 -0
  151. package/src/retailOrg/dtos/validation/RetailerValidationDto.ts +4 -0
  152. package/src/retailOrg/enums/RetailIntegrationSystemEnum.ts +4 -0
  153. package/src/retailOrg/index.ts +3 -0
  154. package/src/retailWizard/dtos/Sale.ts +25 -0
  155. package/src/retailWizard/dtos/WizardReservedLine.ts +3 -0
  156. package/src/retailWizard/dtos/WizardSession.ts +3 -0
  157. package/src/retailWizard/enums/CentralCancelStatusEnum.ts +18 -0
  158. package/src/retailWizard/enums/CentralLiveCheckEnum.ts +10 -0
  159. package/src/retailWizard/enums/CentralSyncStatusEnum.ts +7 -1
  160. package/src/retailWizard/enums/RetailCentralOutboundMessageTypeEnum.ts +5 -0
  161. package/src/retailWizard/enums/WizardLineStatusEnum.ts +2 -0
  162. package/src/retailWizard/events/RetailCentralOutboundMessage.ts +24 -0
  163. package/src/retailWizard/index.ts +4 -0
@@ -0,0 +1,42 @@
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.RetailCentralOutboundMessage = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const RetailCentralOutboundMessageTypeEnum_1 = require("../enums/RetailCentralOutboundMessageTypeEnum");
15
+ /** Aviso a Central de una venta por registrar o cancelar; el consumidor lee la venta por saleId. */
16
+ class RetailCentralOutboundMessage {
17
+ }
18
+ exports.RetailCentralOutboundMessage = RetailCentralOutboundMessage;
19
+ __decorate([
20
+ (0, class_validator_1.IsEnum)(RetailCentralOutboundMessageTypeEnum_1.RetailCentralOutboundMessageTypeEnum),
21
+ __metadata("design:type", String)
22
+ ], RetailCentralOutboundMessage.prototype, "messageType", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsString)(),
25
+ (0, class_validator_1.IsNotEmpty)(),
26
+ __metadata("design:type", String)
27
+ ], RetailCentralOutboundMessage.prototype, "tenantId", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsString)(),
30
+ (0, class_validator_1.IsNotEmpty)(),
31
+ __metadata("design:type", String)
32
+ ], RetailCentralOutboundMessage.prototype, "retailerId", void 0);
33
+ __decorate([
34
+ (0, class_validator_1.IsString)(),
35
+ (0, class_validator_1.IsNotEmpty)(),
36
+ __metadata("design:type", String)
37
+ ], RetailCentralOutboundMessage.prototype, "storeId", void 0);
38
+ __decorate([
39
+ (0, class_validator_1.IsString)(),
40
+ (0, class_validator_1.IsNotEmpty)(),
41
+ __metadata("design:type", String)
42
+ ], RetailCentralOutboundMessage.prototype, "saleId", void 0);
@@ -10,6 +10,8 @@ export * from './enums/SalePaymentMethodEnum';
10
10
  export * from './enums/RefundStatusEnum';
11
11
  export * from './enums/SaleStatusEnum';
12
12
  export * from './enums/CentralSyncStatusEnum';
13
+ export * from './enums/CentralCancelStatusEnum';
14
+ export * from './enums/CentralLiveCheckEnum';
13
15
  export * from './enums/ProspectStatusEnum';
14
16
  export * from './enums/PendingReasonEnum';
15
17
  export * from './enums/OccupationEnum';
@@ -172,11 +174,13 @@ export * from './events/SaleCancelledV2';
172
174
  export * from './events/SessionExpiredV1';
173
175
  export * from './enums/RetailPromotionInboundMessageTypeEnum';
174
176
  export * from './enums/RetailCommissionInboundMessageTypeEnum';
177
+ export * from './enums/RetailCentralOutboundMessageTypeEnum';
175
178
  export * from './events/RetailPromotionInboundMessage';
176
179
  export * from './events/RetailPromotionAccountOpenedMessage';
177
180
  export * from './events/RetailPromotionInstallmentPaidMessage';
178
181
  export * from './events/RetailPromotionQueueMessage';
179
182
  export * from './events/RetailCommissionInboundMessage';
183
+ export * from './events/RetailCentralOutboundMessage';
180
184
  export * from './enums/WizardSessionLookupStatusEnum';
181
185
  export * from './dtos/WizardSessionLookupEntry';
182
186
  export * from './dtos/responses/WizardSessionLookupResponse';
@@ -29,6 +29,8 @@ __exportStar(require("./enums/SalePaymentMethodEnum"), exports);
29
29
  __exportStar(require("./enums/RefundStatusEnum"), exports);
30
30
  __exportStar(require("./enums/SaleStatusEnum"), exports);
31
31
  __exportStar(require("./enums/CentralSyncStatusEnum"), exports);
32
+ __exportStar(require("./enums/CentralCancelStatusEnum"), exports);
33
+ __exportStar(require("./enums/CentralLiveCheckEnum"), exports);
32
34
  __exportStar(require("./enums/ProspectStatusEnum"), exports);
33
35
  __exportStar(require("./enums/PendingReasonEnum"), exports);
34
36
  __exportStar(require("./enums/OccupationEnum"), exports);
@@ -206,11 +208,13 @@ __exportStar(require("./events/SaleCancelledV2"), exports);
206
208
  __exportStar(require("./events/SessionExpiredV1"), exports);
207
209
  __exportStar(require("./enums/RetailPromotionInboundMessageTypeEnum"), exports);
208
210
  __exportStar(require("./enums/RetailCommissionInboundMessageTypeEnum"), exports);
211
+ __exportStar(require("./enums/RetailCentralOutboundMessageTypeEnum"), exports);
209
212
  __exportStar(require("./events/RetailPromotionInboundMessage"), exports);
210
213
  __exportStar(require("./events/RetailPromotionAccountOpenedMessage"), exports);
211
214
  __exportStar(require("./events/RetailPromotionInstallmentPaidMessage"), exports);
212
215
  __exportStar(require("./events/RetailPromotionQueueMessage"), exports);
213
216
  __exportStar(require("./events/RetailCommissionInboundMessage"), exports);
217
+ __exportStar(require("./events/RetailCentralOutboundMessage"), exports);
214
218
  // Lookup privado por lote (GET /private/wizard-sessions/batch)
215
219
  __exportStar(require("./enums/WizardSessionLookupStatusEnum"), exports);
216
220
  __exportStar(require("./dtos/WizardSessionLookupEntry"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.578.0",
3
+ "version": "3.580.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -2,10 +2,12 @@ import { Expose } from 'class-transformer';
2
2
  import { IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator';
3
3
 
4
4
  /**
5
- * Body del PUT que renombra un grupo. `tenantId`, `level` y el id del grupo viajan en el path.
5
+ * Body del PUT que renombra un grupo o lo mueve de padre. `tenantId`, `level` y el id del grupo viajan en el path.
6
6
  * `actedBy` es el cognitoSub de quien accionó en el backoffice — es lo único que queda en la auditoría.
7
7
  */
8
8
  export class UpdateLevelEntityRequest {
9
9
  @Expose() @IsOptional() @IsString() @IsNotEmpty() @MaxLength(120) displayName?: string;
10
+ /** Nuevo padre del grupo; el manager lo valida igual que en el alta. */
11
+ @Expose() @IsOptional() @IsString() @IsNotEmpty() parentId?: string;
10
12
  @Expose() @IsString() @IsNotEmpty() actedBy!: string;
11
13
  }
@@ -1,5 +1,5 @@
1
1
  import { Type } from 'class-transformer';
2
- import { ArrayMinSize, IsArray, IsISO8601, IsString, ValidateNested } from 'class-validator';
2
+ import { ArrayMinSize, IsArray, IsISO8601, IsOptional, IsString, ValidateNested } from 'class-validator';
3
3
  import { ReturnStockLine } from './ReturnStockLine';
4
4
 
5
5
  /** Body de PUT /private/stores/{storeId}/returns (privateReturnStock); componentes guardados en la venta. */
@@ -19,4 +19,9 @@ export class ReturnStockRequest {
19
19
  @ValidateNested({ each: true })
20
20
  @Type(() => ReturnStockLine)
21
21
  lines!: ReturnStockLine[];
22
+
23
+ /** Primer intento de cancelar en Central; si viene, la pieza se libera por las dos mitades. */
24
+ @IsOptional()
25
+ @IsISO8601()
26
+ centralCancelFirstAttemptAt?: string;
22
27
  }
@@ -0,0 +1,19 @@
1
+ import { IsNotEmpty, IsString } from 'class-validator';
2
+
3
+ /** Body de PUT /private/inventory/{imei}/sell (privateSellInventory); venta de una pieza por IMEI. */
4
+ export class SellInventoryRequest {
5
+ /** Sesión del wizard titular de la reserva activa. */
6
+ @IsString()
7
+ @IsNotEmpty()
8
+ sessionId!: string;
9
+
10
+ /** Comprador al que se vende la pieza. */
11
+ @IsString()
12
+ @IsNotEmpty()
13
+ customerId!: string;
14
+
15
+ /** Venta a la que pertenece; sella la pieza con ella. */
16
+ @IsString()
17
+ @IsNotEmpty()
18
+ saleId!: string;
19
+ }
@@ -1,5 +1,5 @@
1
1
  import { Type } from 'class-transformer';
2
- import { ArrayMinSize, IsArray, IsOptional, IsString, ValidateNested } from 'class-validator';
2
+ import { ArrayMinSize, IsArray, IsNotEmpty, IsString, ValidateNested } from 'class-validator';
3
3
  import { StockLine } from './StockLine';
4
4
 
5
5
  /** Body de PUT /private/stores/{storeId}/sales (privateSellStock); una TX de venta. */
@@ -16,8 +16,8 @@ export class SellStockRequest {
16
16
  @Type(() => StockLine)
17
17
  lines!: StockLine[];
18
18
 
19
- /** Venta a la que pertenece; liga los MOV# de la TX con ella. */
20
- @IsOptional()
19
+ /** Venta a la que pertenece; sella las piezas y liga los MOV# de la TX con ella. */
21
20
  @IsString()
22
- saleId?: string;
21
+ @IsNotEmpty()
22
+ saleId!: string;
23
23
  }
@@ -1,8 +1,15 @@
1
+ import type { WizardLineStatusEnum } from '../../../retailWizard/enums/WizardLineStatusEnum';
2
+ import type { InventoryItemStatusEnum } from '../../enums/InventoryItemStatusEnum';
3
+
1
4
  /** Vencimiento nuevo de una línea renovada. */
2
5
  export interface RenewedReservationLine {
3
6
  lineId: string;
4
7
  reservationId: string;
5
8
  expiresAt: string;
9
+ /** Solo presente si la renovación no pudo sostener la pieza (LOST). */
10
+ status?: WizardLineStatusEnum;
11
+ /** Solo en LOST: estado en que Central dejó la pieza (SOLD, IN_TRANSIT o DAMAGED). */
12
+ lostReason?: InventoryItemStatusEnum;
6
13
  }
7
14
 
8
15
  /** Response de privateRenewReservations. */
@@ -2,4 +2,5 @@
2
2
  export enum InventoryInboundMessageTypeEnum {
3
3
  SALE_APPLIED = 'SALE_APPLIED',
4
4
  RETURN = 'RETURN',
5
+ CENTRAL_SALE_ACCEPTED = 'CENTRAL_SALE_ACCEPTED',
5
6
  }
@@ -10,6 +10,7 @@
10
10
  * @property {string} DAMAGED - Dañada, fuera de stock vendible.
11
11
  * @property {string} IN_TRANSIT - En traspaso entre tiendas, fuera de stock vendible.
12
12
  * @property {string} HELD - Capturada por una sesión de venta; no vence hasta venderse o soltarse.
13
+ * @property {string} INACTIVE - Baja suave; fuera de stock vendible.
13
14
  */
14
15
  export enum InventoryItemStatusEnum {
15
16
  AVAILABLE = 'AVAILABLE',
@@ -19,4 +20,5 @@ export enum InventoryItemStatusEnum {
19
20
  DAMAGED = 'DAMAGED',
20
21
  IN_TRANSIT = 'IN_TRANSIT',
21
22
  HELD = 'HELD',
23
+ INACTIVE = 'INACTIVE',
22
24
  }
@@ -0,0 +1,36 @@
1
+ import { Type } from 'class-transformer';
2
+ import { ArrayMinSize, Equals, IsArray, IsISO8601, IsNotEmpty, IsString, ValidateNested } from 'class-validator';
3
+ import { InventoryInboundMessageTypeEnum } from '../enums/InventoryInboundMessageTypeEnum';
4
+ import { StockLine } from '../dtos/requests/StockLine';
5
+
6
+ /** Aviso de que Central registró la venta; el catálogo confirma sus accesorios pendientes. */
7
+ export class InventoryCentralSaleAcceptedMessage {
8
+ @Equals(InventoryInboundMessageTypeEnum.CENTRAL_SALE_ACCEPTED)
9
+ type!: InventoryInboundMessageTypeEnum.CENTRAL_SALE_ACCEPTED;
10
+
11
+ @IsString()
12
+ @IsNotEmpty()
13
+ tenantId!: string;
14
+
15
+ @IsString()
16
+ @IsNotEmpty()
17
+ retailerId!: string;
18
+
19
+ @IsString()
20
+ @IsNotEmpty()
21
+ storeId!: string;
22
+
23
+ @IsString()
24
+ @IsNotEmpty()
25
+ saleId!: string;
26
+
27
+ @IsArray()
28
+ @ArrayMinSize(1)
29
+ @ValidateNested({ each: true })
30
+ @Type(() => StockLine)
31
+ lines!: StockLine[];
32
+
33
+ /** Fecha en que Central aceptó la venta; es el acceptedAt del SKPEND#. */
34
+ @IsISO8601()
35
+ acceptedAt!: string;
36
+ }
@@ -1,5 +1,9 @@
1
+ import type { InventoryCentralSaleAcceptedMessage } from './InventoryCentralSaleAcceptedMessage';
1
2
  import type { InventoryReturnMessage } from './InventoryReturnMessage';
2
3
  import type { InventorySaleAppliedMessage } from './InventorySaleAppliedMessage';
3
4
 
4
5
  /** Cualquier aviso de la cola de inventario; se discrimina por `type`. */
5
- export type InventoryInboundMessage = InventorySaleAppliedMessage | InventoryReturnMessage;
6
+ export type InventoryInboundMessage =
7
+ | InventorySaleAppliedMessage
8
+ | InventoryReturnMessage
9
+ | InventoryCentralSaleAcceptedMessage;
@@ -1,4 +1,4 @@
1
- import { Equals, IsISO8601, IsNotEmpty, IsString, ValidateIf } from 'class-validator';
1
+ import { Equals, IsISO8601, IsNotEmpty, IsString } from 'class-validator';
2
2
  import { InventoryInboundMessageTypeEnum } from '../enums/InventoryInboundMessageTypeEnum';
3
3
  import { SellStockRequest } from '../dtos/requests/SellStockRequest';
4
4
 
@@ -16,12 +16,6 @@ export class InventorySaleAppliedMessage extends SellStockRequest {
16
16
  @IsNotEmpty()
17
17
  storeId!: string;
18
18
 
19
- /** El ValidateIf anula el @IsOptional que hereda de SellStockRequest: aquí saleId es obligatorio. */
20
- @ValidateIf(() => true)
21
- @IsString()
22
- @IsNotEmpty()
23
- saleId!: string;
24
-
25
19
  /** Fecha de la venta; fecha el DAY# y el MOV#. */
26
20
  @IsISO8601()
27
21
  soldAt!: string;
@@ -62,6 +62,7 @@ export * from './dtos/requests/ReserveStockRequest';
62
62
  export * from './dtos/requests/RenewReservationsRequest';
63
63
  export * from './dtos/requests/SuggestPiecesQuery';
64
64
  export * from './dtos/requests/SellStockRequest';
65
+ export * from './dtos/requests/SellInventoryRequest';
65
66
  export * from './dtos/requests/ReleaseStockRequest';
66
67
  export * from './dtos/requests/ReturnStockRequest';
67
68
  export * from './dtos/requests/SyncInventoryRequest';
@@ -102,4 +103,5 @@ export * from './dtos/requests/HoldStockRequest';
102
103
  export * from './dtos/responses/HoldStockResponse';
103
104
  export * from './events/InventorySaleAppliedMessage';
104
105
  export * from './events/InventoryReturnMessage';
106
+ export * from './events/InventoryCentralSaleAcceptedMessage';
105
107
  export * from './events/InventoryInboundMessage';
@@ -0,0 +1,17 @@
1
+ import { RetailIntegrationErrorCodeEnum } from '../enums/RetailIntegrationErrorCodeEnum';
2
+
3
+ /** Status HTTP de cada code: 404 no existe · 409 conflicto de estado · 422 regla de negocio. */
4
+ export const RETAIL_INTEGRATION_ERROR_HTTP_STATUS: Readonly<Record<RetailIntegrationErrorCodeEnum, 404 | 409 | 422>> = {
5
+ [RetailIntegrationErrorCodeEnum.ENTITY_MANAGED_BY_INTEGRATION]: 422,
6
+ [RetailIntegrationErrorCodeEnum.RECONCILIATION_ALREADY_RUNNING]: 409,
7
+ [RetailIntegrationErrorCodeEnum.RECONCILIATION_NOT_FOUND]: 404,
8
+ [RetailIntegrationErrorCodeEnum.RESERVATION_LOST]: 409,
9
+ [RetailIntegrationErrorCodeEnum.PRODUCT_NO_LONGER_SELLABLE]: 409,
10
+ [RetailIntegrationErrorCodeEnum.STORE_NOT_OPERATIONAL]: 422,
11
+ [RetailIntegrationErrorCodeEnum.CENTRAL_SYNC_NOT_RESENDABLE]: 409,
12
+ [RetailIntegrationErrorCodeEnum.SALE_NOT_FOUND]: 404,
13
+ [RetailIntegrationErrorCodeEnum.RETAILER_ALREADY_INTEGRATED]: 409,
14
+ [RetailIntegrationErrorCodeEnum.RETAILER_NOT_INTEGRATED]: 422,
15
+ [RetailIntegrationErrorCodeEnum.CREDIT_REQUIRES_MDM]: 422,
16
+ [RetailIntegrationErrorCodeEnum.RETAILER_INTEGRATION_MISMATCH]: 422,
17
+ };
@@ -26,3 +26,6 @@ export const RETAIL_SKU_PATTERN = /^(?=.{1,64}$)[A-Za-z0-9-]+(?: +[A-Za-z0-9-]+)
26
26
 
27
27
  /** Decimal del contrato: string con dos decimales, nunca negativo. */
28
28
  export const RETAIL_DECIMAL_PATTERN = /^\d+\.\d{2}$/;
29
+
30
+ /** Tope de identificadores por consulta de inventario en vivo. */
31
+ export const RETAIL_LIVE_CHECK_IDENTIFIERS_MAX = 50;
@@ -0,0 +1,9 @@
1
+ import { IsString, Matches, Validate } from 'class-validator';
2
+ import { IsIsoDateTimeWithZone } from '../validators/IsIsoDateTimeWithZone';
3
+
4
+ /** Cuerpo de `POST /private/retail/sales/cancel`; el `saleId` es el mismo del registro. */
5
+ export class CancelRetailSaleRequest {
6
+ @IsString() @Matches(/\S/) saleId!: string;
7
+ @Validate(IsIsoDateTimeWithZone) cancelledAt!: string;
8
+ @IsString() @Matches(/\S/) reason!: string;
9
+ }
@@ -0,0 +1,20 @@
1
+ import { Transform } from 'class-transformer';
2
+ import { ArrayMaxSize, ArrayNotEmpty, IsArray, IsString, Matches } from 'class-validator';
3
+ import { RETAIL_LIVE_CHECK_IDENTIFIERS_MAX } from '../constants/retailIntegrationLimits';
4
+ import { RetailTenantQuery } from './RetailTenantQuery';
5
+
6
+ /** Convierte el csv del query en arreglo; un arreglo ya armado pasa igual. */
7
+ function csvToArray({ value }: { value: unknown }): unknown {
8
+ return typeof value === 'string' ? value.split(',').map((item) => item.trim()) : value;
9
+ }
10
+
11
+ /** Query de `GET /private/retail/inventory/live-check`; `identifiers` llega como csv. */
12
+ export class CheckRetailInventoryRequest extends RetailTenantQuery {
13
+ @IsString() @Matches(/\S/) storeId!: string;
14
+
15
+ @Transform(csvToArray)
16
+ @IsArray() @ArrayNotEmpty() @ArrayMaxSize(RETAIL_LIVE_CHECK_IDENTIFIERS_MAX) @IsString({ each: true }) @Matches(/\S/, { each: true })
17
+ identifiers!: string[];
18
+
19
+ @IsString() @Matches(/\S/) sessionId!: string;
20
+ }
@@ -0,0 +1,37 @@
1
+ import type { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
2
+ import type { ReconciliationRunStatusEnum } from '../enums/ReconciliationRunStatusEnum';
3
+ import type { ReconciliationTriggerEnum } from '../enums/ReconciliationTriggerEnum';
4
+ import type { ReconciliationRunCounts } from './ReconciliationRunCounts';
5
+
6
+ /** Respuesta 200 de GET .../reconciliations/{runId} en org (backofficeGetOrgReconciliation). */
7
+ export interface GetOrgReconciliationResponse {
8
+ runId: string;
9
+ retailerId: string;
10
+ entity: ReconciliationEntityEnum.STORES | ReconciliationEntityEnum.USERS;
11
+ status: ReconciliationRunStatusEnum;
12
+ trigger: ReconciliationTriggerEnum;
13
+ /** cognitoSub de quien pulsó «Actualizar»; ausente en el reloj. */
14
+ triggeredBy?: string;
15
+ startedAt: string;
16
+ finishedAt?: string;
17
+ pagesProcessed: number;
18
+ counts: ReconciliationRunCounts;
19
+ }
20
+
21
+ /** Respuesta 200 de GET .../reconciliations/{runId} en catalog (backofficeGetCatalogReconciliation). */
22
+ export interface GetCatalogReconciliationResponse {
23
+ runId: string;
24
+ retailerId: string;
25
+ entity: ReconciliationEntityEnum.CATALOG | ReconciliationEntityEnum.INVENTORY;
26
+ status: ReconciliationRunStatusEnum;
27
+ trigger: ReconciliationTriggerEnum;
28
+ triggeredBy?: string;
29
+ startedAt: string;
30
+ finishedAt?: string;
31
+ pagesProcessed: number;
32
+ /** Tienda pedida en inventario. */
33
+ storeId?: string;
34
+ /** Tiendas de inventario que faltan por cerrar. */
35
+ storesPending?: number;
36
+ counts: ReconciliationRunCounts;
37
+ }
@@ -1,8 +1,8 @@
1
1
  import { IsString, Matches } from 'class-validator';
2
- import { RetailTenantQuery } from './RetailTenantQuery';
2
+ import { RetailListQuery } from './RetailListQuery';
3
3
 
4
4
  /** Query de `GET /private/retail/inventory`; el inventario es por tienda y no pagina. */
5
- export class GetRetailInventoryRequest extends RetailTenantQuery {
5
+ export class GetRetailInventoryRequest extends RetailListQuery {
6
6
  @IsString()
7
7
  @Matches(/\S/)
8
8
  storeId!: string;
@@ -0,0 +1,32 @@
1
+ import { IsEnum, IsInt, IsNotEmpty, IsOptional, IsString, Min } from 'class-validator';
2
+ import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
+
4
+ /** Mensaje de la cola de revisión: una página, o una tienda completa en inventario. */
5
+ export class ReconciliationPageMessage {
6
+ @IsString()
7
+ @IsNotEmpty()
8
+ tenantId!: string;
9
+
10
+ @IsString()
11
+ @IsNotEmpty()
12
+ retailerId!: string;
13
+
14
+ @IsEnum(ReconciliationEntityEnum)
15
+ entity!: ReconciliationEntityEnum;
16
+
17
+ /** Corrida dueña del lease; otro runId en el LEASE vuelve el mensaje NOOP. */
18
+ @IsString()
19
+ @IsNotEmpty()
20
+ runId!: string;
21
+
22
+ /** Índice de la página que se pide; al re-encolar el resto lleva el índice siguiente. */
23
+ @IsInt()
24
+ @Min(0)
25
+ pageIndex!: number;
26
+
27
+ /** Tienda del mensaje en inventario. */
28
+ @IsOptional()
29
+ @IsString()
30
+ @IsNotEmpty()
31
+ storeId?: string;
32
+ }
@@ -0,0 +1,9 @@
1
+ /** Conteos de una corrida que se guardan en RECON# y se muestran en el avance. */
2
+ export interface ReconciliationRunCounts {
3
+ seen: number;
4
+ created: number;
5
+ updated: number;
6
+ deactivated: number;
7
+ reactivated: number;
8
+ skipped: number;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { IsOptional, IsString, Matches } from 'class-validator';
2
+ import { RetailTenantQuery } from './RetailTenantQuery';
3
+
4
+ /** Base de los listados hacia el retailer; `runId` liga la llamada con la corrida de revisión. */
5
+ export class RetailListQuery extends RetailTenantQuery {
6
+ @IsOptional()
7
+ @IsString()
8
+ @Matches(/\S/)
9
+ runId?: string;
10
+ }
@@ -33,3 +33,14 @@ export interface ListRetailUsersResponse {
33
33
  export interface RegisterRetailSaleResponse {
34
34
  externalSaleId: string;
35
35
  }
36
+
37
+ /** `data` de `POST /private/retail/sales/cancel`. */
38
+ export interface CancelRetailSaleResponse {
39
+ saleId: string;
40
+ }
41
+
42
+ /** `data` de `GET /private/retail/inventory/live-check`: los identificadores que el retailer lista en la tienda. */
43
+ export interface CheckRetailInventoryResponse {
44
+ listed: string[];
45
+ generatedAt: string;
46
+ }
@@ -1,10 +1,10 @@
1
1
  import { Type } from 'class-transformer';
2
2
  import { IsInt, IsOptional, IsString, Matches, Max, Min } from 'class-validator';
3
3
  import { RETAIL_LIST_LIMIT_MAX, RETAIL_LIST_LIMIT_MIN } from '../constants/retailIntegrationLimits';
4
- import { RetailTenantQuery } from './RetailTenantQuery';
4
+ import { RetailListQuery } from './RetailListQuery';
5
5
 
6
6
  /** Base de las listas paginadas; `nextToken` es opaco y viaja tal cual. */
7
- export class RetailPagedQuery extends RetailTenantQuery {
7
+ export class RetailPagedQuery extends RetailListQuery {
8
8
  @IsOptional()
9
9
  @Type(() => Number)
10
10
  @IsInt()
@@ -1,9 +1,13 @@
1
1
  import { IsString, Matches } from 'class-validator';
2
2
  import { RETAIL_TENANT_ID_PATTERN } from '../constants/retailIntegrationLimits';
3
3
 
4
- /** Base de toda llamada de salida: el tenant cuyo retailer se consulta. */
4
+ /** Base de toda llamada de salida: el tenant y el retailer que el connector coteja con el secreto. */
5
5
  export class RetailTenantQuery {
6
6
  @IsString()
7
7
  @Matches(RETAIL_TENANT_ID_PATTERN)
8
8
  tenantId!: string;
9
+
10
+ @IsString()
11
+ @Matches(/\S/)
12
+ retailerId!: string;
9
13
  }
@@ -0,0 +1,19 @@
1
+ import { IsIn, IsNotEmpty, IsOptional, IsString } from 'class-validator';
2
+ import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
+
4
+ /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en catalog (backofficeStartCatalogReconciliation). */
5
+ export class StartCatalogReconciliationRequest {
6
+ @IsIn([ReconciliationEntityEnum.CATALOG, ReconciliationEntityEnum.INVENTORY])
7
+ entity!: ReconciliationEntityEnum.CATALOG | ReconciliationEntityEnum.INVENTORY;
8
+
9
+ /** Tienda a revisar en inventario; sin ella se revisan todas las del padrón. */
10
+ @IsOptional()
11
+ @IsString()
12
+ @IsNotEmpty()
13
+ storeId?: string;
14
+ }
15
+
16
+ /** Respuesta 202 del arranque en catalog. */
17
+ export interface StartCatalogReconciliationResponse {
18
+ runId: string;
19
+ }
@@ -0,0 +1,13 @@
1
+ import { IsIn } from 'class-validator';
2
+ import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
+
4
+ /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en org (backofficeStartOrgReconciliation). */
5
+ export class StartOrgReconciliationRequest {
6
+ @IsIn([ReconciliationEntityEnum.STORES, ReconciliationEntityEnum.USERS])
7
+ entity!: ReconciliationEntityEnum.STORES | ReconciliationEntityEnum.USERS;
8
+ }
9
+
10
+ /** Respuesta 202 del arranque en org. */
11
+ export interface StartOrgReconciliationResponse {
12
+ runId: string;
13
+ }
@@ -0,0 +1,5 @@
1
+ /** Motivo de una baja suave; solo NOT_IN_ZENTRAL se reactiva solo al volver a listarse. */
2
+ export enum InactiveReasonEnum {
3
+ NOT_IN_ZENTRAL = 'NOT_IN_ZENTRAL',
4
+ ZENTRAL_EVENT = 'ZENTRAL_EVENT',
5
+ }
@@ -0,0 +1,7 @@
1
+ /** Entidad que revisa una corrida contra los listados de Zentral. */
2
+ export enum ReconciliationEntityEnum {
3
+ STORES = 'STORES',
4
+ USERS = 'USERS',
5
+ CATALOG = 'CATALOG',
6
+ INVENTORY = 'INVENTORY',
7
+ }
@@ -0,0 +1,7 @@
1
+ /** Estado de una corrida de revisión; BRAKED es el freno por bajas de más del 10 %. */
2
+ export enum ReconciliationRunStatusEnum {
3
+ RUNNING = 'RUNNING',
4
+ COMPLETE = 'COMPLETE',
5
+ ABORTED = 'ABORTED',
6
+ BRAKED = 'BRAKED',
7
+ }
@@ -0,0 +1,6 @@
1
+ /** Quién abrió la corrida: el reloj horario, el botón «Actualizar» o la activación del retailer. */
2
+ export enum ReconciliationTriggerEnum {
3
+ SCHEDULED = 'SCHEDULED',
4
+ MANUAL = 'MANUAL',
5
+ ACTIVATION = 'ACTIVATION',
6
+ }
@@ -13,4 +13,6 @@ export enum RetailEventRejectCodeEnum {
13
13
  TRACKING_MODE_MISMATCH = 'TRACKING_MODE_MISMATCH',
14
14
  INVALID_IMEI = 'INVALID_IMEI',
15
15
  IDENTIFIER_CONFLICT = 'IDENTIFIER_CONFLICT',
16
+ /** El evento trae una fecha posterior a la hora del servidor. */
17
+ EVENT_IN_FUTURE = 'EVENT_IN_FUTURE',
16
18
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Codes HTTP de la integración con el sistema del retailer (org, catalog, wizard y connector).
3
+ * El status de cada uno está en `RETAIL_INTEGRATION_ERROR_HTTP_STATUS`; las clases `DomainError` viven en el lambda.
4
+ * @enum {string}
5
+ */
6
+ export enum RetailIntegrationErrorCodeEnum {
7
+ /** La entidad la administra la integración y no se edita desde SK. */
8
+ ENTITY_MANAGED_BY_INTEGRATION = 'ENTITY_MANAGED_BY_INTEGRATION',
9
+ RECONCILIATION_ALREADY_RUNNING = 'RECONCILIATION_ALREADY_RUNNING',
10
+ RECONCILIATION_NOT_FOUND = 'RECONCILIATION_NOT_FOUND',
11
+ /** El apartado de la pieza se perdió antes del cierre. */
12
+ RESERVATION_LOST = 'RESERVATION_LOST',
13
+ PRODUCT_NO_LONGER_SELLABLE = 'PRODUCT_NO_LONGER_SELLABLE',
14
+ STORE_NOT_OPERATIONAL = 'STORE_NOT_OPERATIONAL',
15
+ /** La venta no está en un estado de sincronización con Central que admita reenvío. */
16
+ CENTRAL_SYNC_NOT_RESENDABLE = 'CENTRAL_SYNC_NOT_RESENDABLE',
17
+ SALE_NOT_FOUND = 'SALE_NOT_FOUND',
18
+ RETAILER_ALREADY_INTEGRATED = 'RETAILER_ALREADY_INTEGRATED',
19
+ RETAILER_NOT_INTEGRATED = 'RETAILER_NOT_INTEGRATED',
20
+ /** El producto no tiene MDM y solo se vende de contado. */
21
+ CREDIT_REQUIRES_MDM = 'CREDIT_REQUIRES_MDM',
22
+ RETAILER_INTEGRATION_MISMATCH = 'RETAILER_INTEGRATION_MISMATCH',
23
+ }
@@ -0,0 +1,4 @@
1
+ /** Rol especial de una línea de venta; `null` es una línea normal. */
2
+ export enum RetailSaleLineRoleEnum {
3
+ GIFT = 'GIFT',
4
+ }
@@ -19,5 +19,11 @@ export * from './RetailSaleTypeEnum';
19
19
  export * from './RetailSaleFinancierEnum';
20
20
  export * from './RetailPaymentMethodEnum';
21
21
  export * from './RetailLinePaymentTypeEnum';
22
+ export * from './RetailSaleLineRoleEnum';
22
23
  export * from './RetailEventRejectCodeEnum';
23
24
  export * from './RetailMovementTypeEnum';
25
+ export * from './RetailIntegrationErrorCodeEnum';
26
+ export * from './ReconciliationEntityEnum';
27
+ export * from './ReconciliationRunStatusEnum';
28
+ export * from './ReconciliationTriggerEnum';
29
+ export * from './InactiveReasonEnum';