@fiado/type-kit 3.567.0 → 3.569.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.
- package/_test_/unit/retailCatalog/stockRequests.test.ts +18 -0
- package/_test_/unit/retailWizard/storePendingRefundsResponse.test.ts +33 -0
- package/bin/retailCatalog/dtos/requests/GetInventorySkuQuery.d.ts +2 -0
- package/bin/retailCatalog/dtos/requests/GetInventorySkuQuery.js +6 -0
- package/bin/retailCatalog/dtos/requests/SellStockRequest.d.ts +2 -0
- package/bin/retailCatalog/dtos/requests/SellStockRequest.js +5 -0
- package/bin/retailCatalog/dtos/responses/GetInventorySkuResponse.d.ts +10 -0
- package/bin/retailCatalog/dtos/responses/InventoryLensResponse.d.ts +4 -0
- package/bin/retailCatalog/events/InventorySaleAppliedMessage.d.ts +1 -0
- package/bin/retailCatalog/events/InventorySaleAppliedMessage.js +1 -0
- package/bin/retailWizard/dtos/SellerPendingRefundItem.d.ts +23 -0
- package/bin/retailWizard/dtos/SellerPendingRefundItem.js +2 -0
- package/bin/retailWizard/dtos/responses/StorePendingRefundsResponse.d.ts +7 -0
- package/bin/retailWizard/dtos/responses/StorePendingRefundsResponse.js +2 -0
- package/bin/retailWizard/enums/RefundStatusEnum.d.ts +5 -0
- package/bin/retailWizard/enums/RefundStatusEnum.js +9 -0
- package/bin/retailWizard/index.d.ts +3 -0
- package/bin/retailWizard/index.js +3 -0
- package/package.json +1 -1
- package/src/retailCatalog/dtos/requests/GetInventorySkuQuery.ts +8 -2
- package/src/retailCatalog/dtos/requests/SellStockRequest.ts +6 -1
- package/src/retailCatalog/dtos/responses/GetInventorySkuResponse.ts +11 -0
- package/src/retailCatalog/dtos/responses/InventoryLensResponse.ts +4 -0
- package/src/retailCatalog/events/InventorySaleAppliedMessage.ts +3 -1
- package/src/retailWizard/dtos/SellerPendingRefundItem.ts +24 -0
- package/src/retailWizard/dtos/responses/StorePendingRefundsResponse.ts +8 -0
- package/src/retailWizard/enums/RefundStatusEnum.ts +5 -0
- package/src/retailWizard/index.ts +3 -0
|
@@ -68,6 +68,11 @@ describe('SellStockRequest y ReturnStockRequest', () => {
|
|
|
68
68
|
const bad = { ...saleLine, components: [{ sku: 'SIM-1', qty: 1, identifiers: [123] }] };
|
|
69
69
|
expect(errorsOf(SellStockRequest, { sessionId: 's', retailerId: 'ret', lines: [bad] })).toContain('lines.0.components.0.identifiers');
|
|
70
70
|
});
|
|
71
|
+
it('acepta saleId opcional', () => {
|
|
72
|
+
const base = { sessionId: 's', retailerId: 'ret', lines: [saleLine] };
|
|
73
|
+
expect(errorsOf(SellStockRequest, { ...base, saleId: 'sale-1' })).toEqual([]);
|
|
74
|
+
expect(errorsOf(SellStockRequest, { ...base, saleId: 123 })).toContain('saleId');
|
|
75
|
+
});
|
|
71
76
|
it('devolución exige saleId y soldAt ISO', () => {
|
|
72
77
|
const ok = { saleId: 'sale', retailerId: 'ret', soldAt: '2026-09-23T10:00:00.000Z', lines: [saleLine] };
|
|
73
78
|
expect(errorsOf(ReturnStockRequest, ok)).toEqual([]);
|
|
@@ -153,4 +158,17 @@ describe('GetInventorySkuQuery', () => {
|
|
|
153
158
|
expect(validateSync(dto)).toEqual([]);
|
|
154
159
|
});
|
|
155
160
|
it('rechaza limit fuera de rango', () => expect(errorsOf(GetInventorySkuQuery, { limit: '0' })).toContain('limit'));
|
|
161
|
+
it.each([
|
|
162
|
+
[true, true],
|
|
163
|
+
[false, false],
|
|
164
|
+
['true', true],
|
|
165
|
+
['false', false],
|
|
166
|
+
])('convierte includeHolds %p a %p', (raw, expected) => {
|
|
167
|
+
const dto = plainToInstance(GetInventorySkuQuery, { includeHolds: raw });
|
|
168
|
+
expect(dto.includeHolds).toBe(expected);
|
|
169
|
+
expect(validateSync(dto)).toEqual([]);
|
|
170
|
+
});
|
|
171
|
+
it('rechaza includeHolds no booleano', () => {
|
|
172
|
+
expect(errorsOf(GetInventorySkuQuery, { includeHolds: 'x' })).toContain('includeHolds');
|
|
173
|
+
});
|
|
156
174
|
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { RefundStatusEnum, SalePaymentMethodEnum } from '../../../src/retailWizard';
|
|
3
|
+
import type { StorePendingRefundsResponse } from '../../../src/retailWizard';
|
|
4
|
+
|
|
5
|
+
describe('StorePendingRefundsResponse', () => {
|
|
6
|
+
it('expone el estado del reembolso y el trail de la entrega', () => {
|
|
7
|
+
const response: StorePendingRefundsResponse = {
|
|
8
|
+
refunds: [
|
|
9
|
+
{
|
|
10
|
+
sessionId: 'S1',
|
|
11
|
+
storeId: 'ST-1',
|
|
12
|
+
sellerId: 'RU-1',
|
|
13
|
+
sellerName: 'Ana',
|
|
14
|
+
creditId: 'C-1',
|
|
15
|
+
folio: 'ENG-1',
|
|
16
|
+
refundPendingCents: 150000,
|
|
17
|
+
paymentMethod: SalePaymentMethodEnum.CASH,
|
|
18
|
+
status: RefundStatusEnum.DELIVERED,
|
|
19
|
+
deliverable: false,
|
|
20
|
+
cancelledAt: '2026-10-20T10:00:00.000Z',
|
|
21
|
+
cancelledBy: 'sub-cancel',
|
|
22
|
+
deliveredAt: '2026-10-21T10:00:00.000Z',
|
|
23
|
+
deliveredBy: 'sub-v',
|
|
24
|
+
deliveredByName: 'Ana',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
pendingCount: 0,
|
|
28
|
+
pendingTotalCents: 0,
|
|
29
|
+
};
|
|
30
|
+
expect(response.refunds[0].status).toBe('DELIVERED');
|
|
31
|
+
expect(Object.values(RefundStatusEnum)).toEqual(['PENDING', 'DELIVERED']);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -40,3 +40,9 @@ __decorate([
|
|
|
40
40
|
(0, class_validator_1.IsString)(),
|
|
41
41
|
__metadata("design:type", String)
|
|
42
42
|
], GetInventorySkuQuery.prototype, "nextToken", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_validator_1.IsOptional)(),
|
|
45
|
+
(0, class_transformer_1.Transform)(({ value }) => (value === 'true' ? true : value === 'false' ? false : value)),
|
|
46
|
+
(0, class_validator_1.IsBoolean)(),
|
|
47
|
+
__metadata("design:type", Boolean)
|
|
48
|
+
], GetInventorySkuQuery.prototype, "includeHolds", void 0);
|
|
@@ -32,3 +32,8 @@ __decorate([
|
|
|
32
32
|
(0, class_transformer_1.Type)(() => StockLine_1.StockLine),
|
|
33
33
|
__metadata("design:type", Array)
|
|
34
34
|
], SellStockRequest.prototype, "lines", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsString)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], SellStockRequest.prototype, "saleId", void 0);
|
|
@@ -18,6 +18,15 @@ export interface InventoryMovementEntry {
|
|
|
18
18
|
reason?: InventoryMovementReasonEnum;
|
|
19
19
|
/** Id del MOV#, para ligar un ajuste con reversesMovementId. */
|
|
20
20
|
movementId?: string;
|
|
21
|
+
/** Traspaso al que pertenece el movimiento, si es uno. */
|
|
22
|
+
transferId?: string;
|
|
23
|
+
/** Venta a la que pertenece el movimiento, si es una. */
|
|
24
|
+
saleId?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Unidades apartadas (BALANCE#.reserved) del SKU en una tienda. */
|
|
27
|
+
export interface InventoryStoreReserved {
|
|
28
|
+
storeId: string;
|
|
29
|
+
reserved: number;
|
|
21
30
|
}
|
|
22
31
|
/** Pieza de una tienda; status AVAILABLE, SOLD o DAMAGED. */
|
|
23
32
|
export interface InventoryPieceEntry {
|
|
@@ -37,6 +46,7 @@ export interface GetInventorySkuResponse {
|
|
|
37
46
|
nextToken: string | null;
|
|
38
47
|
/** Vacío si el SKU se rastrea por cantidad. */
|
|
39
48
|
piecesByStore: InventoryStorePieces[];
|
|
49
|
+
reservedByStore: InventoryStoreReserved[];
|
|
40
50
|
currentPrice: SkuPriceEntry | null;
|
|
41
51
|
/** Promos de venta vigentes del SKU; `null` si retail-promotions no respondió. */
|
|
42
52
|
promotions?: ActiveSalePromotionSummary[] | null;
|
|
@@ -85,6 +85,8 @@ export interface InventoryLensStoreStock {
|
|
|
85
85
|
storeId: string;
|
|
86
86
|
stock: number;
|
|
87
87
|
sold: number;
|
|
88
|
+
/** Unidades apartadas (BALANCE#.reserved). */
|
|
89
|
+
reserved: number;
|
|
88
90
|
}
|
|
89
91
|
/** Alertas de una fila del modo lista. */
|
|
90
92
|
export interface InventoryLensAlerts {
|
|
@@ -110,6 +112,8 @@ export interface InventoryLensListItem {
|
|
|
110
112
|
storesWithStock: number;
|
|
111
113
|
storesTotal: number;
|
|
112
114
|
byStore: InventoryLensStoreStock[];
|
|
115
|
+
/** Suma de `reserved` de todas las tiendas. */
|
|
116
|
+
reservedTotal: number;
|
|
113
117
|
soldPeriod: number;
|
|
114
118
|
coverage: InventoryLensCoverage;
|
|
115
119
|
alerts: InventoryLensAlerts;
|
|
@@ -6,6 +6,7 @@ export declare class InventorySaleAppliedMessage extends SellStockRequest {
|
|
|
6
6
|
/** La cola es compartida entre silos; el tenant elige las tablas. */
|
|
7
7
|
tenantId: string;
|
|
8
8
|
storeId: string;
|
|
9
|
+
/** El ValidateIf anula el @IsOptional que hereda de SellStockRequest: aquí saleId es obligatorio. */
|
|
9
10
|
saleId: string;
|
|
10
11
|
/** Fecha de la venta; fecha el DAY# y el MOV#. */
|
|
11
12
|
soldAt: string;
|
|
@@ -32,6 +32,7 @@ __decorate([
|
|
|
32
32
|
__metadata("design:type", String)
|
|
33
33
|
], InventorySaleAppliedMessage.prototype, "storeId", void 0);
|
|
34
34
|
__decorate([
|
|
35
|
+
(0, class_validator_1.ValidateIf)(() => true),
|
|
35
36
|
(0, class_validator_1.IsString)(),
|
|
36
37
|
(0, class_validator_1.IsNotEmpty)(),
|
|
37
38
|
__metadata("design:type", String)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RefundStatusEnum } from '../enums/RefundStatusEnum';
|
|
2
|
+
import { SalePaymentMethodEnum } from '../enums/SalePaymentMethodEnum';
|
|
3
|
+
/** Un reembolso de enganche de la tienda en el Portal Vendedor (GET /portal/pending-refunds). */
|
|
4
|
+
export interface SellerPendingRefundItem {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
storeId: string;
|
|
7
|
+
sellerId: string | null;
|
|
8
|
+
sellerName: string | null;
|
|
9
|
+
creditId: string | null;
|
|
10
|
+
folio: string | null;
|
|
11
|
+
refundPendingCents: number;
|
|
12
|
+
/** `null` = el registro no guardó con qué se cobró el enganche; no se puede marcar entregado. */
|
|
13
|
+
paymentMethod: SalePaymentMethodEnum | null;
|
|
14
|
+
status: RefundStatusEnum;
|
|
15
|
+
/** `true` si el vendedor puede marcarlo entregado: efectivo y pendiente. */
|
|
16
|
+
deliverable: boolean;
|
|
17
|
+
cancelledAt: string;
|
|
18
|
+
/** Actor que canceló la venta (cognitoSub o nombre del lambda). */
|
|
19
|
+
cancelledBy: string;
|
|
20
|
+
deliveredAt: string | null;
|
|
21
|
+
deliveredBy: string | null;
|
|
22
|
+
deliveredByName: string | null;
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SellerPendingRefundItem } from '../SellerPendingRefundItem';
|
|
2
|
+
/** Respuesta de GET /portal/pending-refunds: pendientes de la tienda y entregados de los últimos 30 días. */
|
|
3
|
+
export interface StorePendingRefundsResponse {
|
|
4
|
+
refunds: SellerPendingRefundItem[];
|
|
5
|
+
pendingCount: number;
|
|
6
|
+
pendingTotalCents: number;
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RefundStatusEnum = void 0;
|
|
4
|
+
/** Estado del reembolso de enganche de una venta a crédito cancelada. SureKeep — Portal Vendedor. */
|
|
5
|
+
var RefundStatusEnum;
|
|
6
|
+
(function (RefundStatusEnum) {
|
|
7
|
+
RefundStatusEnum["PENDING"] = "PENDING";
|
|
8
|
+
RefundStatusEnum["DELIVERED"] = "DELIVERED";
|
|
9
|
+
})(RefundStatusEnum || (exports.RefundStatusEnum = RefundStatusEnum = {}));
|
|
@@ -7,6 +7,7 @@ export * from './enums/PaymentMethodEnum';
|
|
|
7
7
|
export * from './enums/ExternalProviderEnum';
|
|
8
8
|
export * from './enums/SaleTypeEnum';
|
|
9
9
|
export * from './enums/SalePaymentMethodEnum';
|
|
10
|
+
export * from './enums/RefundStatusEnum';
|
|
10
11
|
export * from './enums/SaleStatusEnum';
|
|
11
12
|
export * from './enums/CentralSyncStatusEnum';
|
|
12
13
|
export * from './enums/ProspectStatusEnum';
|
|
@@ -102,6 +103,8 @@ export * from './dtos/requests/SuggestIdentifiersQuery';
|
|
|
102
103
|
export * from './dtos/requests/SendEmailOtpRequest';
|
|
103
104
|
export * from './dtos/requests/VerifyEmailOtpRequest';
|
|
104
105
|
export * from './dtos/requests/CreateAccessorySaleRequest';
|
|
106
|
+
export * from './dtos/SellerPendingRefundItem';
|
|
107
|
+
export * from './dtos/responses/StorePendingRefundsResponse';
|
|
105
108
|
export * from './dtos/responses/KycPrepareResponse';
|
|
106
109
|
export * from './dtos/responses/ProofOfAddressPrepareResponse';
|
|
107
110
|
export * from './dtos/responses/SessionFinanciersResponse';
|
|
@@ -26,6 +26,7 @@ __exportStar(require("./enums/PaymentMethodEnum"), exports);
|
|
|
26
26
|
__exportStar(require("./enums/ExternalProviderEnum"), exports);
|
|
27
27
|
__exportStar(require("./enums/SaleTypeEnum"), exports);
|
|
28
28
|
__exportStar(require("./enums/SalePaymentMethodEnum"), exports);
|
|
29
|
+
__exportStar(require("./enums/RefundStatusEnum"), exports);
|
|
29
30
|
__exportStar(require("./enums/SaleStatusEnum"), exports);
|
|
30
31
|
__exportStar(require("./enums/CentralSyncStatusEnum"), exports);
|
|
31
32
|
__exportStar(require("./enums/ProspectStatusEnum"), exports);
|
|
@@ -128,6 +129,8 @@ __exportStar(require("./dtos/requests/SendEmailOtpRequest"), exports);
|
|
|
128
129
|
__exportStar(require("./dtos/requests/VerifyEmailOtpRequest"), exports);
|
|
129
130
|
__exportStar(require("./dtos/requests/CreateAccessorySaleRequest"), exports);
|
|
130
131
|
// Response DTOs (output tipado por endpoint)
|
|
132
|
+
__exportStar(require("./dtos/SellerPendingRefundItem"), exports);
|
|
133
|
+
__exportStar(require("./dtos/responses/StorePendingRefundsResponse"), exports);
|
|
131
134
|
__exportStar(require("./dtos/responses/KycPrepareResponse"), exports);
|
|
132
135
|
__exportStar(require("./dtos/responses/ProofOfAddressPrepareResponse"), exports);
|
|
133
136
|
__exportStar(require("./dtos/responses/SessionFinanciersResponse"), exports);
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Type } from 'class-transformer';
|
|
2
|
-
import { IsEnum, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
|
|
1
|
+
import { Transform, Type } from 'class-transformer';
|
|
2
|
+
import { IsBoolean, IsEnum, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
|
|
3
3
|
import { InventoryLensPeriodEnum } from '../../enums/InventoryLensPeriodEnum';
|
|
4
4
|
|
|
5
5
|
/** Query de GET /backoffice/inventory/skus/{sku} (backofficeGetInventorySku); el retailer sale del token. */
|
|
@@ -24,4 +24,10 @@ export class GetInventorySkuQuery {
|
|
|
24
24
|
@IsOptional()
|
|
25
25
|
@IsString()
|
|
26
26
|
nextToken?: string;
|
|
27
|
+
|
|
28
|
+
/** `true` incluye en el libro los movimientos RESERVATION y RELEASE. */
|
|
29
|
+
@IsOptional()
|
|
30
|
+
@Transform(({ value }) => (value === 'true' ? true : value === 'false' ? false : value))
|
|
31
|
+
@IsBoolean()
|
|
32
|
+
includeHolds?: boolean;
|
|
27
33
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Type } from 'class-transformer';
|
|
2
|
-
import { ArrayMinSize, IsArray, IsString, ValidateNested } from 'class-validator';
|
|
2
|
+
import { ArrayMinSize, IsArray, IsOptional, 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. */
|
|
@@ -15,4 +15,9 @@ export class SellStockRequest {
|
|
|
15
15
|
@ValidateNested({ each: true })
|
|
16
16
|
@Type(() => StockLine)
|
|
17
17
|
lines!: StockLine[];
|
|
18
|
+
|
|
19
|
+
/** Venta a la que pertenece; liga los MOV# de la TX con ella. */
|
|
20
|
+
@IsOptional()
|
|
21
|
+
@IsString()
|
|
22
|
+
saleId?: string;
|
|
18
23
|
}
|
|
@@ -19,6 +19,16 @@ export interface InventoryMovementEntry {
|
|
|
19
19
|
reason?: InventoryMovementReasonEnum;
|
|
20
20
|
/** Id del MOV#, para ligar un ajuste con reversesMovementId. */
|
|
21
21
|
movementId?: string;
|
|
22
|
+
/** Traspaso al que pertenece el movimiento, si es uno. */
|
|
23
|
+
transferId?: string;
|
|
24
|
+
/** Venta a la que pertenece el movimiento, si es una. */
|
|
25
|
+
saleId?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Unidades apartadas (BALANCE#.reserved) del SKU en una tienda. */
|
|
29
|
+
export interface InventoryStoreReserved {
|
|
30
|
+
storeId: string;
|
|
31
|
+
reserved: number;
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
/** Pieza de una tienda; status AVAILABLE, SOLD o DAMAGED. */
|
|
@@ -41,6 +51,7 @@ export interface GetInventorySkuResponse {
|
|
|
41
51
|
nextToken: string | null;
|
|
42
52
|
/** Vacío si el SKU se rastrea por cantidad. */
|
|
43
53
|
piecesByStore: InventoryStorePieces[];
|
|
54
|
+
reservedByStore: InventoryStoreReserved[];
|
|
44
55
|
currentPrice: SkuPriceEntry | null;
|
|
45
56
|
/** Promos de venta vigentes del SKU; `null` si retail-promotions no respondió. */
|
|
46
57
|
promotions?: ActiveSalePromotionSummary[] | null;
|
|
@@ -97,6 +97,8 @@ export interface InventoryLensStoreStock {
|
|
|
97
97
|
storeId: string;
|
|
98
98
|
stock: number;
|
|
99
99
|
sold: number;
|
|
100
|
+
/** Unidades apartadas (BALANCE#.reserved). */
|
|
101
|
+
reserved: number;
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
/** Alertas de una fila del modo lista. */
|
|
@@ -125,6 +127,8 @@ export interface InventoryLensListItem {
|
|
|
125
127
|
storesWithStock: number;
|
|
126
128
|
storesTotal: number;
|
|
127
129
|
byStore: InventoryLensStoreStock[];
|
|
130
|
+
/** Suma de `reserved` de todas las tiendas. */
|
|
131
|
+
reservedTotal: number;
|
|
128
132
|
soldPeriod: number;
|
|
129
133
|
coverage: InventoryLensCoverage;
|
|
130
134
|
alerts: InventoryLensAlerts;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Equals, IsISO8601, IsNotEmpty, IsString } from 'class-validator';
|
|
1
|
+
import { Equals, IsISO8601, IsNotEmpty, IsString, ValidateIf } from 'class-validator';
|
|
2
2
|
import { InventoryInboundMessageTypeEnum } from '../enums/InventoryInboundMessageTypeEnum';
|
|
3
3
|
import { SellStockRequest } from '../dtos/requests/SellStockRequest';
|
|
4
4
|
|
|
@@ -16,6 +16,8 @@ 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)
|
|
19
21
|
@IsString()
|
|
20
22
|
@IsNotEmpty()
|
|
21
23
|
saleId!: string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { RefundStatusEnum } from '../enums/RefundStatusEnum';
|
|
2
|
+
import { SalePaymentMethodEnum } from '../enums/SalePaymentMethodEnum';
|
|
3
|
+
|
|
4
|
+
/** Un reembolso de enganche de la tienda en el Portal Vendedor (GET /portal/pending-refunds). */
|
|
5
|
+
export interface SellerPendingRefundItem {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
storeId: string;
|
|
8
|
+
sellerId: string | null;
|
|
9
|
+
sellerName: string | null;
|
|
10
|
+
creditId: string | null;
|
|
11
|
+
folio: string | null;
|
|
12
|
+
refundPendingCents: number;
|
|
13
|
+
/** `null` = el registro no guardó con qué se cobró el enganche; no se puede marcar entregado. */
|
|
14
|
+
paymentMethod: SalePaymentMethodEnum | null;
|
|
15
|
+
status: RefundStatusEnum;
|
|
16
|
+
/** `true` si el vendedor puede marcarlo entregado: efectivo y pendiente. */
|
|
17
|
+
deliverable: boolean;
|
|
18
|
+
cancelledAt: string;
|
|
19
|
+
/** Actor que canceló la venta (cognitoSub o nombre del lambda). */
|
|
20
|
+
cancelledBy: string;
|
|
21
|
+
deliveredAt: string | null;
|
|
22
|
+
deliveredBy: string | null;
|
|
23
|
+
deliveredByName: string | null;
|
|
24
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SellerPendingRefundItem } from '../SellerPendingRefundItem';
|
|
2
|
+
|
|
3
|
+
/** Respuesta de GET /portal/pending-refunds: pendientes de la tienda y entregados de los últimos 30 días. */
|
|
4
|
+
export interface StorePendingRefundsResponse {
|
|
5
|
+
refunds: SellerPendingRefundItem[];
|
|
6
|
+
pendingCount: number;
|
|
7
|
+
pendingTotalCents: number;
|
|
8
|
+
}
|
|
@@ -10,6 +10,7 @@ export * from './enums/PaymentMethodEnum';
|
|
|
10
10
|
export * from './enums/ExternalProviderEnum';
|
|
11
11
|
export * from './enums/SaleTypeEnum';
|
|
12
12
|
export * from './enums/SalePaymentMethodEnum';
|
|
13
|
+
export * from './enums/RefundStatusEnum';
|
|
13
14
|
export * from './enums/SaleStatusEnum';
|
|
14
15
|
export * from './enums/CentralSyncStatusEnum';
|
|
15
16
|
export * from './enums/ProspectStatusEnum';
|
|
@@ -115,6 +116,8 @@ export * from './dtos/requests/VerifyEmailOtpRequest';
|
|
|
115
116
|
export * from './dtos/requests/CreateAccessorySaleRequest';
|
|
116
117
|
|
|
117
118
|
// Response DTOs (output tipado por endpoint)
|
|
119
|
+
export * from './dtos/SellerPendingRefundItem';
|
|
120
|
+
export * from './dtos/responses/StorePendingRefundsResponse';
|
|
118
121
|
export * from './dtos/responses/KycPrepareResponse';
|
|
119
122
|
export * from './dtos/responses/ProofOfAddressPrepareResponse';
|
|
120
123
|
export * from './dtos/responses/SessionFinanciersResponse';
|